码迷,mamicode.com
首页 > 其他好文 > 详细

IntelliJ IDEA:Field injection is not recommended

时间:2017-05-01 00:29:22      阅读:2658      评论:0      收藏:0      [点我收藏+]

标签:方式   autowire   原则   实例化   nal   通过   code   使用   一件事   

使用IntelliJ IDEA进行开发的时候,code analyze的时候会出现提示“Field injection is not recommended”。

stackoverflow上有篇回答:http://stackoverflow.com/questions/39890849/what-exactly-is-field-injection-and-how-to-avoid-it

国外有篇文章:http://vojtechruzicka.com/field-dependency-injection-considered-harmful/

依赖注入方式:

1、通过构造方法

2、通过setters或者其它方法

3、通过反射直接注入到fields

一般的@Autowired就是通过第三种方式

注入的指导方针:

1、为了强制依赖,或者为了易变性,使用构造方法注入

2、为了可选的或者可变的依赖,使用setter注入

3、尽量避免使用直接在属性上注入

属性注入的坏处:

1、你不能使用属性注入的方式构建不可变对象。

2、你的类和依赖容器强耦合,不能再容器外使用。

3、你的类不能绕过反射(例如单元测试的时候)进行实例化,必须通过依赖容器才能实例化,这更像是集成测试。

4、实际的依赖被隐藏在外面,不是在构造方法或者其它方法里面反射的。

5、一个类经常会有超过10个的依赖。如果使用构造方法的方式注入的话,构造方法会有10个参数,明显有点蠢。但是如果使用属性注入的话就没有这样的限制。但是一个类有很多的依赖,是一个危险的标志,因为很有可能这个类完成了超过一件事,违背了单一职责原则。

总结:

尽量避免使用属性注入,虽然非常方便。

IntelliJ IDEA:Field injection is not recommended

标签:方式   autowire   原则   实例化   nal   通过   code   使用   一件事   

原文地址:http://www.cnblogs.com/tootwo2/p/6790754.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!