我是Spring的新手,我正在努力学习如何使用ApplicationContextAware, 所以我有这两个类number.java和number2.java,都在同一个包中
number实现ApplicationContextAware并覆盖
public void setApplicationContext(ApplicationContext context), 它将上下文保存在私有ApplicationContext变量中 - context 。
我在JavaConfig文件中定义了以下三个bean
package org.penta.test1;
import org.springframework.context.annotation.Bean;
public class numConfig {
@Bean(name="number3")
public number2 getNumber3()
{
return new number2(7);
}
@Bean(name="number1")
public number getNumber()
{
return new number(5);
}
@Bean(name="number2")
public number getNumber2()
{
number n = new number();
n.reset();
return n;
}
}
创建bean number2时出现问题, 这就是reset()代码在number.java
中的作用public void reset()
{
number2 n2 = (number2)context.getBean("number3");
n = n2.getNum();
}
我一直收到此错误
Exception caught - org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'number2' defined in org.penta.test1.numConfig2: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.penta.test1.number]: Factory method 'getNumber2' threw exception; nested exception is java.lang.NullPointerException
我似乎无法意识到我做错了什么。有人可以帮忙吗?
如果我删除number2 bean定义,那么代码工作正常,没有错误。 我似乎无法理解为什么number.java即使在意识到它的上下文之后也找不到在同一个上下文中定义的number3 bean。