上次已经为大家介绍过java spring依赖注入方式有哪几种的主要内容,今天再来为大家介绍一些与之相关的内容,也就是依赖注入的一些缺点,并且介绍一下spring4.3的新特征,一起来看看吧。
一、首先说一下java spring依赖注入有哪些缺点
1.当我们利用constructor来注入的时候,比较明显的一个缺点就是:假如我们需要注入的对象特别多的时候,我们的构造器就会显得非常的冗余、不好看,非常影响美观和可读性,维护起来也较为困难;
2.当我们选择setter方法来注入的时候,我们不能将对象设为final的;
3.当我们在field变量上来实现注入的时候
a.这样不符合JavaBean的规范,而且很有可能引起空指针;
b.同时也不能将对象标为final的;
c.类与DI容器高度耦合,我们不能在外部使用它;
d.类不通过反射不能被实例化(例如单元测试中),你需要用DI容器去实例化它,这更像集成测试;
二、然后为大家介绍一下Spring 4.3 的新特征:
在spring 4.3以后,如果我们的类中只有单个构造函数,那么Spring就会实现一个隐式的自动注入。
之前,代码展示如下:
@Service public class FooService { private final FooRepository repository; @Autowired public FooService(FooRepository repository) { this.repository = repository } }
在Spring 4.3之后,代码展示如下:
@Service public class FooService { private final FooRepository repository; public FooService(FooRepository repository) { this.repository = repository } }
由上可知,去掉了构造器上的@Autowired注解,经测试后发现,程序能正常运行,repository的依赖也被成功注入了。
总而言之:
1.强制性的依赖性或者当目标不可变时,使用构造函数注入(应该说尽量都使用构造器来注入)
2.可选或多变的依赖使用setter注入(建议可以使用构造器结合setter的方式来注入)
3.在大多数的情况下避免field域注入
4.Spring 4.3+可以试一试构造器的隐式注入,采用此方式注入后,使得我们的代码更优雅,更独立,减少了对Spring的依赖性。
以上就是关于java spring依赖注入有哪些缺点以及升级版新特征是什么的主要内容。java的知识还是十分丰富和有趣的。如果你对java知识感兴趣,想要了解更多java架构师相关内容,敬请关注奇Q工具网。
推荐阅读: