Class A {

   private B instanceB;

   @Autowired
   public setInstanceB(B instanceB) {
     this.instanceB = instanceB;
   }

}

高于一个与这个。
Class A {

   @Autowired
   private B instanceB;

   public setInstanceB(B instanceB) {
     this.instanceB = instanceB;
   }

}

行为会因访问修饰符而有所不同吗?

最佳答案

不同之处在于,如果在该 setter 中放置了setter,它将被调用,这在执行其他有用的操作,验证等操作时很有用。通常,您正在比较:

public class A {
  private B instanceB;

  @Autowired
  public setInstanceB(B instanceB) {
    this.instanceB = instanceB;
  }
}


public class A {
  @Autowired
  private B instanceB;
}

(即没有二传手)。

在这种情况下,第一个是可取的,因为缺少 setter 会使模拟/单元测试更加困难。即使您有一个设置员,但可以自动连接数据成员,但是如果设置员执行了其他操作,则可能会造成问题。这会使您的单元测试无效。

关于java - 将@Autowired放入变量和方法之间有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1659951/

10-14 11:41