注入不适用于新操作员

vic*_*cky 5 java spring

任何人都可以解释为什么@Inject对象在使用new运算符初始化类时为null ?

public class A{
    @Inject
    B b;
    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

当创建上述类的A a = new A();,我得到bnull.有谁能解释为什么?我知道它在Inject A类时有效.但是我想知道为什么它不适用于new运算符.春天做什么?

Aru*_*hny 7

依赖注入由弹簧容器处理,因此只有容器产生的物体才会受到它的影响

在这种情况下,您使用newoperator 手动创建对象,spring容器将不知道对象创建.

一种可能的解决方案是使用@ConfigurableAnnotation(和AspectJ)来解决这个问题,如文档中所示

还看看这个答案

  • @Ralph我也会用这个信息更新答案 (2认同)