自动生成构造函数和字段

在执行弹簧容器的自动配置时,自动连接字段和构造函数是否错误。例如:

@Component
public class Test1 {

    @Autowired
    private Test2 B;

    @Autowired
      Test(Test2 C) {
      this.B=C;
    }
}

你能解释一下到底发生了什么吗?


解决方案

错误。您可能有两个Test2Bean,一个名为"B",另一个名为"C"(名称应为小写BTW)。将首先调用该构造函数,将该字段设置为C;然后注入该字段,并使用B覆盖该字段。如果只有一个Test2Bean,那么它将工作,但请记住,构造函数注入的目的是避免字段注入,而是允许使用final字段。

相关文章