1. XML配置方式:
<!-- 定义依赖类 MyDependency -->
<bean id="myDependency" class="com.example.MyDependency" />
<!-- 通过构造函数注入依赖 -->
<bean id="myClass" class="com.example.MyClass">
<constructor-arg ref="myDependency" />
</bean>
在这个例子中,MyClass通过构造函数接收MyDependency的实例,实现了依赖注入。
2. Java配置方式:
@Configuration
public class AppConfig {
@Bean
public MyDependency myDependency() {
return new MyDependency();
}
@Bean
public MyClass myClass(MyDependency myDependency) {
return new MyClass(myDependency);
}
}
在Java配置中,通过@Bean注解的方法参数,Spring容器会自动识别并注入依赖。
3. 使用@Autowired注解:
public class MyClass {
private final MyDependency myDependency;
@Autowired
public MyClass(MyDependency myDependency) {
this.myDependency = myDependency;
}
}
在这个例子中,通过@Autowired注解标记构造函数,Spring容器将会自动进行构造函数注入。
构造函数注入的优势包括:
- 明确的依赖关系: 构造函数明确指定了依赖关系,使得代码更加清晰和可读。
- 不可变性: 通过构造函数注入的依赖是不可变的,这有助于确保对象在创建后保持一致状态。
- 依赖满足保证: 依赖关系在对象创建时就得到满足,避免了在使用对象之前进行空值检查的需要。
总体而言,基于构造函数的依赖注入是一种推荐使用的方式,特别是在对象创建时就需要满足所有依赖关系的情况下。
转载请注明出处:http://www.pingtaimeng.com/article/detail/6942/Spring