我个人更喜欢你的第一个选择(构造函数注入),因为该
myDao字段可以标记为final:
@Controllerpublic class MyControllear { private final MyDao myDao; @Autowired public MyController(MyDao myDao) { this.myDao = myDao; }构造函数注入还允许你在单元测试中测试类,而无需依赖Spring的代码。
第二种选择最好写成:
@Controllerpublic class MyControllear { @Autowired private MyDao myDao; MyController() { }使用字段注入,Spring将创建对象,然后更新标记为注入的字段。
你没有提到的一个选项是
@Autowired使用setter方法(setter注入):
@Controllerpublic class MyControllear { private MyDao myDao; MyController() { } @Autowired public void setMyDao(MyDao myDao) { this.myDao = myDao; }你不必选择一个或另一个。你可以将字段注入用于某些依赖项,并将构造函数注入用于其他针对同一对象的注入。



