Feild 注入
@Autowired
@Resource
推荐使用 @Resource ,@Resource 支持 name type,默认 name 注入,同时 它是 JDK 的注解,减少依赖
构造方法注入
Spring 官方推荐 构造方法注入,具体的优势:
单一职责:指的是如果一个类的依赖太多,构造方法就会显得很臃肿,这时我们就得思考当前类是否承担了太多职责。假如使用 @Autowired 注入 field 可能就不会发现问题。
依赖不可变:只用使用构造方法注入才能将字段定义成 final
依赖隐藏:清晰的知道类需要什么
降低容器耦合度:使用构造方法注入他只是一个普通的类,不依赖 DI 容器。如果没有容器耦合,我们可以将该类交给容器管理也可以自己管理,同时切换 DI 框架也很方便。