-
问题:当一个类被 @Component 注解修饰,或者在 applicationContext 配置文件中使用了 <bean> 标签配置,将其交给 Spring 容器进行管理后,如果在该类的属性或方法中new了对象,这个类将不能再被其他类使用 @Autowired 自动注入,会报空指针异常。
-
解决方法:虽然 Spring 管理下的类中依旧可以使用 new 的方式生成对象,但是不推荐这么做,这样做了之后,该类只能通过手动调用 ClassPathXmlApplicationContext 类的 getBean 方法获取实例对象。建议一个类中使用的所有对象应该事先在 Spring 配置文件中定义好, 或者使用注解的方式统一交给 Spring 容器进行管理,使用的时候直接使用 @Autowired 获取实例对象即可。
参考地址:
https://www.cnblogs.com/soundofcolors/p/11096621.html
但实际上,我的问题还不太一样,稍微有些差别
我的问题是:当一个类TESTA使用@Component 注解修饰,或者在 applicationContext 配置文件中使用了 <bean> 标签配置,将其交给 Spring 容器进行管理后,该类内部使用@Autowired注入了另外一个对象TESTB(使用@Bean注解的方式注入),正常使用TESTA类的时候,使用@Autowired注入,模式为单例,但是在另外一个地方new 了 TESTA类,结果原来使用@Autowired注入的TESTA类的地方,调用A类中的TESTB对象的时候,报TESTB对象空指针异常
解决方式和上面说的是一样
另外参考这个解决方案