@Autowired是Spring框架中的一个注解,用于自动装配Bean的依赖关系。通过@Autowired注解,Spring容器会自动为标记了该注解的字段、构造函数、Setter方法等注入相应类型的Bean。@Autowired可以用在构造函数、方法、字段以及配置类的构造函数上。

以下是一些常见的用法:

1. 构造函数注入:
@Service
public class MyService {

    private final MyDependency dependency;

    @Autowired
    public MyService(MyDependency dependency) {
        this.dependency = dependency;
    }

    // 其他方法...
}

2. Setter方法注入:
@Component
public class MyComponent {

    private MyDependency dependency;

    @Autowired
    public void setDependency(MyDependency dependency) {
        this.dependency = dependency;
    }

    // 其他方法...
}

3. 字段注入:
@Repository
public class MyRepository {

    @Autowired
    private MyDependency dependency;

    // 其他方法...
}

4. 方法注入:
@Component
public class MyComponent {

    private MyDependency dependency;

    @Autowired
    public void initDependency(MyDependency dependency) {
        this.dependency = dependency;
    }

    // 其他方法...
}

5. 在配置类的构造函数上使用:
@Configuration
public class AppConfig {

    private final MyDependency dependency;

    @Autowired
    public AppConfig(MyDependency dependency) {
        this.dependency = dependency;
    }

    // 声明其他@Bean...
}

在使用@Autowired时,Spring容器会根据被注入的类型在容器中查找匹配的Bean,并将其注入到相应的位置。如果有多个匹配的Bean,可以搭配@Qualifier注解一起使用,或者使用其他解决冲突的方式。

在Spring 4.3及以上版本,@Autowired注解的使用变得更加灵活,支持对集合类型的注入以及可选的注入等。此外,@Autowired注解也可以用在方法参数上,用于对方法中的参数进行注入。
@Service
public class MyService {

    private final MyDependency dependency;

    @Autowired
    public MyService(@Qualifier("specificDependency") MyDependency dependency) {
        this.dependency = dependency;
    }

    // 其他方法...
}

在这个例子中,@Qualifier注解用于指定具体要注入的Bean的ID。


转载请注明出处:http://www.pingtaimeng.com/article/detail/6952/Spring