spring注入方式 构造器注入,set注入对比

spring3.x推荐使用set注入

为什么spring4.x以后又推荐构造器注入

 

下面这篇博客写的过于好,可以看看下面的博客。

http://t.zoukankan.com/Donnnnnn-p-10405863.html

 

 

总结:

构造器注入的好处:

1、依赖不可变

2、依赖不为空

3、完全初始化的状态

 

Q1:跟3.x里说的一样,我要是有大量的依赖要注入,构造方法不会显得很臃肿吗?

对于这个问题,说明你的类当中有太多的责任,那么你要好好想一想是不是自己违反了类的单一性职责原则,从而导致有这么多的依赖要注入。

Q2:是不是其他的注入方式都不适合用了呢?

当然不是,存在即是合理!setter的方式既然一开始被Spring推荐肯定是有它的道理,像之前提到的setter的方式能用让类在之后重新配置或者重新注入,就是其优点之一。除此之外,如果一个依赖有多种实现方式,我们可以使用@Qualifier,在构造方法里选择对应的名字注入,也可以使用field或者setter的方式来手动配置要注入的实现。

 

 

 

有点迷惑filed注入,

filed注入其实就是@Autowired写在属性变量上的注入方式。

构造器注入还可以避免 Field 注入的循环依赖问题

 

可以看看@Autowired的底层原理

https://zhuanlan.zhihu.com/p/467129172

 

posted @ 2022-08-25 10:12  宋songsong  阅读(311)  评论(0编辑  收藏  举报