在Spring管理下的类中使用new对象带来的问题


  • 问题:当一个类被 @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对象空指针异常

解决方式和上面说的是一样

另外参考这个解决方案

解决SpringBoot中自己new出来的对象不能自动注入对象和属性的问题


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM