spring bean实例化调用什么方法 spring注入 优点?

[更新]
·
·
分类:互联网
1327 阅读

spring注入

spring注入 优点?

优点?

1.属性注入
优点
简单,便于添加新的依赖,项目中使用最多(然而是Spring官方不推荐的方式)
减少大量冗余代码
新增依赖时不需要修改过多代码
2.构造器注入
优点
依赖不可变:可以使用final关键字来修饰依赖字段
依赖不为空:允许构造函数可以保证一些重要属性在Bean实例化时就设置好
单一职责原则:当使用构造函数注入时,如果参数过多可能会促使你主动对类进行拆分
完全初始化的状态:保证返回客户端的代码是完全初始化的状态
更好的封装类变量:不需要为每个属性指定Setter方法,避免外部错误的调用
更利于单元测试:其它两种方式注入,进行单元测试时需要初始化整个Spring的环境
避免循环依赖:若存在循环依赖则启动会抛异常
方法注入
优点
注入属性过多时,使用Setter方法更轻便
方便在类实例化之后重新对该属性进行配置或注入

Spring如何解决循环依赖的问题?

Spring是通过先创建对象,将对象放在缓存中,再进行属性设置的。比如A,B互相依赖,先创建A对象,放在缓存中,设置属性时发现依赖B,这时候初始化B,设置B的属性,发现依赖A,缓存中有A的引用,虽然还没有初始化完全。B初始化完成后,A就可以拿到B了。这仅仅是解决set依赖,如果是构造器依赖就解决不了了。
随便说一句,一般架构设计的时候都是上层调下层,同层和下层调上层都不应该出现,可以考虑下设计是不是有问题。
希望对你有帮助,如果有用记得点个赞哦,也可以关注一下我,会分享一些技术类文章。