Spring依赖注入详解:setter注入与构造器注入
需积分: 9 146 浏览量
更新于2024-10-01
收藏 3KB TXT 举报
"Spring依赖注入详解"
在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种重要的设计模式,它使得组件之间的耦合度降低,提高了代码的可测试性和可维护性。Spring通过DI来管理对象及其依赖关系,使得开发者无需在代码中手动创建和配置对象,而是由Spring容器负责这些工作。
1)设值注入(Setter Injection)
设值注入是最常见的依赖注入方式,它通过调用对象的setter方法来设置依赖对象。在上述示例中,`Chinese`类依赖于`Axe`接口,Spring容器通过`<property>`标签将`StoneAxe`实例注入到`Chinese`的`axe`属性中。以下是对示例的详细解释:
- 首先,定义了两个接口,`Person`表示人,`Axe`表示斧头。`Person`有一个`useAxe`方法,需要一个`Axe`实例来完成砍柴的动作。
- `Chinese`类实现了`Person`接口,它拥有一个`Axe`类型的成员变量`axe`,并通过`setAxe`方法接收`Axe`实例。
- `StoneAxe`类实现了`Axe`接口,提供具体的砍柴行为。
- 在Spring配置文件中,定义了两个bean,一个是`Chinese`,另一个是`StoneAxe`。通过`<property>`标签将`stoneAxe`引用赋值给`chinese` bean的`axe`属性。
- `BeanTest`类加载配置文件并获取`chinese` bean,然后调用`useAxe`方法,此时`Axe`的实例已经由Spring注入,所以可以正常执行砍柴操作。
2)构造器注入(Constructor Injection)
构造器注入是另一种依赖注入方式,它在对象创建时就传入所有依赖。这种方式确保对象在构造时就已经完整,没有null值。对于`Chinese`类,如果希望使用构造器注入,可以修改如下:
```java
public class Chinese implements Person {
private Axe axe;
// 构造器注入
public Chinese(Axe axe) {
this.axe = axe;
}
// ...其他代码不变...
}
```
然后在Spring配置文件中,需要使用`<constructor-arg>`标签来指定构造器参数:
```xml
<bean id="chinese" class="Chinese">
<constructor-arg>
<ref local="stoneAxe"/>
</constructor-arg>
</bean>
```
这样,当Spring创建`chinese` bean时,会通过`Chinese`的构造器传递`stoneAxe`实例。
总结:
依赖注入是Spring的核心特性之一,它简化了对象间的依赖关系处理,使得代码更加清晰、灵活。通过设值注入和构造器注入,我们可以根据需求选择合适的注入方式。在实际开发中,通常结合使用这两种注入方式,以实现更高效的代码管理和维护。
204 浏览量
473 浏览量
130 浏览量
197 浏览量
122 浏览量
2009-04-11 上传
174 浏览量
2023-04-12 上传

i_daisy
- 粉丝: 0
最新资源
- C#后端开发之Redis使用教程
- 掌握React-Resonance技术实现数据驱动UI动画渐变
- Delphi实现汉字拼音首字母提取工具源码解析
- 解决java.lang.NoClassDefFoundError: org/objenesis/ObjenesisHelper错误
- OpenSceneGraph第三方库:简易编译指南
- 深入分析PHP7内核及性能优化
- MATLAB新手教程二:控制系统的深入解析
- C语言实现图像数字水印隐藏技术介绍
- Laravel 6会话跟踪工具:多会话与设备管理
- Berrer WMF汉化版:CAD图形轻松转换
- 实现两种JS右下角消息提示的设计与测试
- VS2010环境下Bundler编译与三维重建技术
- Office卸载工具:一键清除旧版本,轻松安装新版本
- Android与PHP通过POST函数交互教学
- MeiliSearch Symfony捆绑包:Symfony项目中的搜索引擎集成
- Swift开发之SFBarrageGift:直播礼物动画效果展示