我有一个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
初始化过程是否有影响
不应该。早在xml时代,当您希望将参数传递给构造函数时,就会提到构造函数arg的ref bean。这仅仅意味着必须有一个以指定bean类型作为参数的构造函数。在构造函数中添加什么并不重要,只要通过构造函数创建一个有效的对象即可(尽管这只是普通的java编程,与Spring无关)。
自动布线只是一个简单的方法来创建你的对象与必要的依赖关系,你的代码仍然是你的代码。
No.
当Spring实例化你的类时,它将找到带有@Autowired
注释的构造函数,收集与构造函数所接受的参数对应的bean,然后用这些bean作为参数调用它。
然后,它将扫描类中的所有字段和方法,并将bean注入用@Autowired
注释的任何字段。