Spring Boot 提供了多种方式来实现依赖注入:
- 构造方法注入:通过在类的构造方法上使用
@Autowired
注解,将依赖通过构造方法的参数进行注入。
javaCopy Code
@ComponentpublicclassExampleService {
private DependencyService dependencyService;
@Autowired
publicExampleService(DependencyService dependencyService) {
this.dependencyService = dependencyService;
}
}
- Setter 方法注入:通过在类的Setter方法上使用
@Autowired
注解,将依赖通过Setter方法进行注入。
javaCopy Code
@ComponentpublicclassExampleService {
private DependencyService dependencyService;
@Autowired
publicvoidsetDependencyService(DependencyService dependencyService) {
this.dependencyService = dependencyService;
}
}
- 字段注入:通过在类的字段上使用
@Autowired
注解,将依赖直接注入到字段中。
javaCopy Code
@ComponentpublicclassExampleService {
@Autowired
private DependencyService dependencyService;
}
- 方法注入:通过在类的方法上使用
@Autowired
注解,将依赖通过方法参数进行注入。可以用在普通方法、工厂方法和Bean生命周期回调方法上。
javaCopy Code
@ComponentpublicclassExampleService {
private DependencyService dependencyService;
@Autowired
publicvoidsetDependencyService(DependencyService dependencyService) {
this.dependencyService = dependencyService;
}
@Autowired
publicvoidinit(DependencyService dependencyService) {
// ...
}
}
- 注解限定符(Qualifier):当存在多个相同类型的依赖时,可以通过
@Qualifier
注解指定具体的Bean进行注入。
javaCopy Code
@ComponentpublicclassExampleService {
@Autowired
@Qualifier("specificDependency")
private DependencyService dependencyService;
}
- 自定义注解:通过创建自定义注解和对应的注解处理器,可以实现更灵活的依赖注入方式。
javaCopy Code
@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)@Autowiredpublic@interface MyCustomAnnotation {
// ...
}
@ComponentpublicclassExampleService {
@MyCustomAnnotation
private DependencyService dependencyService;
}
这些方式都是基于 Spring 的依赖注入机制来实现的,Spring Boot 会根据配置和约定自动完成依赖的查找和注入。开发者可以根据项目的需求选择合适的依赖注入方式。