以下是一些常见的用法:
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