码迷,mamicode.com
首页 > 编程语言 > 详细

Spring容器管理对象和new对象

时间:2018-09-30 20:15:40      阅读:390      评论:0      收藏:0      [点我收藏+]

标签:其他   etc   auto   com   属性   context   object   类的属性   red   

问题:一个业务类交给spring管理,并自动注入了其他业务类作为属性,方法中通过全局属性调用其他业务类的方法。当该业务类是通过new获取的情况下,该实例的属性会是null(不存在依赖注入实例),调用方法就会报空指针。

为保证该方法无论是被new出来的对象调用还是被spring容器对象引用都能正常使用,方法中就要 使用spring管理的类 。


获取spring管理的对象:
 WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); 
 Object obj=wac.getBean(beanID);

spring的IOC和DI理解:
控制反转:对象实例在spring启动后都会被创建,只需要从容器中获取就可以使用。可以通过xml配置bean的方法获取,也可以通过注解扫描的方法创建。@Component
依赖注入:字面意思指的是类的属性实例化过程。在获取到被spring管理的对象时,该对象的属性如果在spring容器也存在实例,那么可以直接从spring获取(注入),
也就该类的属性依赖于对象本身的实例化而实例化。如果对象不是从容器获取,那么它的属性也不会从容器实例化。可以通过xml配置注入,也可以通过在可扫描类下加@Autowired依赖注入。

总结:new对象与spring管理的对象没有关联。new对象并没有spring参与管理,它的属性不存在依赖注入,它的属性要手动实例化。spring管理的对象与它的属性(被注入的属性)存在依赖关系;






 

Spring容器管理对象和new对象

标签:其他   etc   auto   com   属性   context   object   类的属性   red   

原文地址:https://www.cnblogs.com/mryangbo/p/9732744.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!