持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情
上一篇文章我们介绍了构造方法注入依赖的方式,这篇文章我们介绍另外的依赖注入方式。
setter 方法依赖注入
对于我们日常开发中声明的Java Bean,我们通常会使用getter 方法和setter 方法来访问其对应的字段。虽然目前常用lombok,但是其本质也是生成对应属性字段的getter 方法和setter 方法。
setter 方法时修改对应的属性内容的;getter 方法就是获取相应的属性状态的。
所以,通过setter 方法,也可以将相应的依赖对象设置到被注入的对象中去。
如:
class Test {
private Dep1 dep1;
private Dep2 dep2;
public void setDep1(Dep1 dep1) {
this.dep1 = dep1;
}
public void setDep2(Dep2 dep2) {
this.dep2 = dep2;
}
// 省略getter 方法
}
通过这样的方式,外界就可以调用某个对象的setter 方法为其注入所依赖的对象了。
通过setter 方法进行依赖注入和构造方法注入的区别为:
- 构造方法在对象构造完成之后就可以使用
- 而通过setter 方法进行依赖注入相对来说更宽松一些,它可以在对象构造完成之后再进行注入
这就像你在决定去海边生活之后,可以到了海边之后再决定,是居住在联排别墅,还是独栋别墅,还是公寓里;但是如果使用构造方法进行依赖注入就好比还没有考察海边到底什么样,适合什么样的住所,就得决定好住在哪里,然后才能去海边。
总结
我们可以发现,已经讲过的两种依赖注入方式其实也没有多么高深,其本质就是“表达需求”,即:我需要依赖什么对象,我把我的需求告诉外部(IOC 容器),然后外部就可以为我们解决我们的需求,仅此而已。
所以说,Spring 框架的学习过程不要感觉它“实在太过庞大”,而不知道从哪里入手。其实Spring 框架产生的原因就是为了解决我们开发中的一些比较常见且不方便做的一些事情的。所以对于Spring 的一些特性,我们会发现,其实都是我们日常中有所接触的场景。