【发布时间】:2023-03-12 07:01:01
【问题描述】:
我有一个类似的例子
Other 类需要 MyBean 的实例,所以我正在创建一个属性并在创建 Other 时使用该属性
@Configuration
public SomeClass {
@Resource
private MyBean b;
@Autowired
Environment env;
@Bean
public MyBean myBean() {
MyBean b = new MyBean();
b.foo(env.getProperty("mb"); // NPE
return b;
}
@Bean
public Other other() {
Other o = new Other(o);
return o;
}
}
但是我在初始化 myBean 对象时得到了 NullPointerException,我猜这是因为 env 属性在那时还没有被连接。
如果我不使用 bean 并直接使用该方法,一切正常。
@Configuration
public SomeClass {
@Autowired
Environment env;
@Bean
public MyBean myBean() {
MyBean b = new MyBean();
b.foo(env.getProperty("mb"); // NPE
return b;
}
@Bean
public Other other() {
Other o = new Other(myBean());
return o;
}
}
是因为我在同一个@Configuration 类中定义了@Bean?
【问题讨论】:
-
我猜如果您在
b字段中替换@Autowired的@Resource注释它可以正常工作? -
@XtremeBiker 好吧,那行得通。您可以将其发布为答案吗?
标签: java spring dependency-injection