值得一看

Field injection is not recommend

2019-08-18  本文已影响0人  Eafrey

运行 IDE 的自动检查工具分析代码时, 如果用@Autowired 注解的话,会提示如下的警告:


FieldInjectionIsNotRecommended.png

第一次看到这样的提示,是很困惑的,因为通常情况下直接使用@Autowired 不仅让代码更加简洁易读,写起来也十分的方便。

虽然最新(5.1.9)的Spring 文档依赖注入的章节里只介绍了两种依赖注入的方法,但实际上有三种依赖注入的方式:

  1. Constructor-based dependency injection(基于构造方法的依赖注入)
  2. Setter-based dependency injection(基于 setter 的依赖注入)
  3. Field-based dependency injection(基于 filed 注解的依赖注入)

第三种依赖注入的方式是代码分析工具不建议的,但也是使用最多、最常见的依赖注入方式。即使在 Spring 官方的一些手册里(比如Accessing data with MySQL),也可以看到使用 Field-based dependency injection。

下面分别具体介绍一下这三种依赖注入的方式。

三种依赖注入的方式

Field-based dependency injection 的缺点

结论

基于字段的依赖注入虽然用起来十分方便,代码也十分简洁,但确实存在着一些缺点,这也是为什么代码检查工具不推荐这种写法的原因。
通常情况下,如果有 final 字段,或者有必需的依赖项,建议使用基于构造方法的依赖注入。基于 setter 的依赖注入通常建议用来注入可选的依赖项。

上一篇 下一篇

猜你喜欢

热点阅读