我在 bean 中遇到了 @Autowired 的问题。我已经发布了简化的代码结构。我有两个用@Configuration 注释的类和两个简单的bean。在 D 类中,自动装配的 bean 没有注入。所以我想知道是否可以在不改变结构的情况下解决 NPE?
A类:
@Configuration
public class A {
@Autowired
private B b;
@Bean
publict Other other() {
b.doFoo();
Other other = new Other();
}
@Bean
public C c() {
return new C();
}
}
B类:
@Configuration
public class B {
@Bean
public D d() {
return new D();
}
public void doFoo() {
d().doBar();
}
}
C类的内部结构无关紧要。所以D类:
public class D {
@Autowired
C c;
public void doBar() {
c.doFooBar(); // And here we got NPE
}
}
我必须注意,如果我将 bean D 的初始化从 B 移动到 A 并将其自动连接到 B 一切正常:
@Configuration
public class A {
@Autowired
private B b;
@Bean
publict Other other() {
b.doFoo();
Other other = new Other()
}
@Bean
public C c() {
return new C();
}
@Bean
public D d() {
return new D();
}
}
@Configuration
public class B {
@Autowired
private D d;
public void doFoo() {
d.doBar();
}
}
但这种方法不适合。