我正在尝试了解自动装配在SPringBoot中的工作方式。
因此,例如,我创建了一个singketon类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 ?
}


我做对了吗?或我该如何实现?

最佳答案

对于初学者,您应该考虑在构造函数上使用@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/

10-07 19:46
查看更多