Fork me on GitHub

Spring的规范,推荐使用基于构造器的注入

推荐使用基于构造器进行数据注入,不推荐使用基于变量的注入即在变量上使用注解@Autowired。因为这可以将注入字段声明为final字段。而如果使用基于变量的注入将不能支持将字段声明为final,因为final修饰的字段需要在类对象实例化时初始化,而@Autowired修饰的字段的初始化顺序在构造器调用之后。


基于字段注入的几个缺点:

  • 不允许使用final修饰字段
  • 会破坏单一职责原则:会很容易在类中注入过多的对象,而不会容易意识到类承担太多的职责,如果是使用构造器注入,超过10个参数就会被轻易的认识到需要将类分解为多个小的类来细分职责。
  • 容易与IOC耦合:比如需要进行单元测试时必须初始化IOC容器类中才能注入对象
  • 隐藏了对外部对象的依赖

参考文献


最新评论

    还没有人评论...

当当

友情链接

Powered by Python. Copyright © 2017.

鄂ICP备17010875号. All rights reserved.