我试图了解自动装配在SPringBoot中的工作原理。 所以,我创建了一个单音类B [例如],我正在处理C类中的B类实例,现在想在A类中使用它。这一切都运行正常。但是,现在我被告知使用自动布线,因为我的应用程序是springBoot。所以我做了以下
@Component
Class B{
int track = 0;
}
Class C{
@Autowired
B b
public void doSomething(){
b.track = 1;
}
}
Class A{
// I want to use the object b in here for further processing, how can I do it ?
}
我做得对吗?或者我怎样才能实现这一目标?
答案 0 :(得分:1)
首先,您应该考虑在构造函数上使用@Autowired,因为如果没有正确连接,它可以[避免空指针异常] [1]。
如果您想将B自动装配到A中,请按照与C相同的方式进行;只是确保你避免循环依赖。
@Component
Class B{
int track = 0;
}
Class C{
private final B b;
@Autowired
public C(B b){
this.b = b;
}
public void doSomething(){
b.track = 1;
}
}
Class A{
private final B b;
@Autowired
public A(B b){
this.b = b;
}
}
[1]:http://evan.bottch.com/2009/02/03/setter-injection-sucks/< - 这是一个老人,但是一个好人;另见http://olivergierke.de/2013/11/why-field-injection-is-evil/