Spring构造函数自动装配和初始化其他字段

时间:2015-06-08 07:03:30

标签: java spring dependency-injection

我有一个Spring类,在那里我使用构造函数自动装配服务,加上在同一个构造函数中我正在初始化同一个类的其他字段。

@Component
class Converter {
  private TestService testService;
  private Interger otherFields;
  @Autowired
  public Converter(TestService testService) {
     this.testService = testService;
     this.otherFields = new Integer(10);
  }
}

我的功能正常,但这是一个好习惯吗?@Autowired注释会对otherFields初始化过程产生影响

2 个答案:

答案 0 :(得分:1)

不应该。回到xml时代,当你想将一个参数传递给构造函数时,你提到了构造函数arg的ref bean。这只意味着您必须具有将指定的bean类型作为参数的构造函数。你在构造函数中添加的内容并不重要,只要你通过构造函数创建一个有效的对象(虽然这只是普通的java编程而与Spring无关)。

自动连接只是一种简单的方法来创建具有必要依赖关系的对象,而您的代码仍然是您的代码。

答案 1 :(得分:1)

没有

当Spring实例化你的类时,它将找到用AccountRecoveryViewController注释的构造函数,收集与构造函数所使用的参数对应的bean,然后将这些bean作为参数调用它。

然后,它将扫描您班级中的所有字段和方法,并将bean注入任何使用@Autowired注释的字段。它不会触及未注释的方法或字段。