聚合全网技术文章,根据你的阅读喜好进行个性推荐
上面是spring.xml里的配置信息
下面是 程序入口
为什么上面的代码执行到Bbb类中Bbb91()方法 没有报ccc的空指针错误?而如果 Aaa类中 sys方法 是 new Bbb().Bbb91();方法时 ccc会报空指针错误?
不好意思,看着aaa,bbb有点头晕
Hello,Aaa是需要在Spring上下文中注入的。如果你new Aaa(),那么它仅仅是在jvm中实例化了一个对象,并没有参与到Spring上下文中,所以这个Aaa就不会有下面的bbb的注入动作。导致其调用bbb的时候报空指针。正确的做法是@Autowired Aaa aaa;然后在代码中aaa.sys()
你调用的是Bbb的静态方法,而不是spring容器管理的Bbb的实例,那么你如何能要求此方法里边已经注入了Ccc呢?
@JAVA_ZIDANE_J 抱歉,都被代码晃花眼了,没看清楚。这样来说的确是有点奇怪,唯一只能说明spirng注入了Bbb的静态变量ccc,所以你用静态方法时能调用到(我还是第一次听说有这种情况,得写些代码确认一下)。所以当你自己new一个Bbb的时候,就是空指针了
试过了,模拟不出来,就算是三个类按你建,跑的时候还是会报空指针
不好意思,看着aaa,bbb有点头晕
Hello,Aaa是需要在Spring上下文中注入的。如果你new Aaa(),那么它仅仅是在jvm中实例化了一个对象,并没有参与到Spring上下文中,所以这个Aaa就不会有下面的bbb的注入动作。导致其调用bbb的时候报空指针。正确的做法是@Autowired Aaa aaa;然后在代码中aaa.sys()
你调用的是Bbb的静态方法,而不是spring容器管理的Bbb的实例,那么你如何能要求此方法里边已经注入了Ccc呢?
@JAVA_ZIDANE_J 抱歉,都被代码晃花眼了,没看清楚。这样来说的确是有点奇怪,唯一只能说明spirng注入了Bbb的静态变量ccc,所以你用静态方法时能调用到(我还是第一次听说有这种情况,得写些代码确认一下)。所以当你自己new一个Bbb的时候,就是空指针了
试过了,模拟不出来,就算是三个类按你建,跑的时候还是会报空指针