Spring中Bean的管理问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring中Bean的管理问题相关的知识,希望对你有一定的参考价值。

首先,配置文件中定义的bean并不是都在启动时实例化。


<bean id="accountService" class="com.foo.DefaultAccountService" scope="singleton"/>
注意bean有一个属性scope,只有在scope没有配置或配置为如上时,启动时才实例化。(如果一个singleton的bean依赖一个prototype的bean,那么这个prototype的bean在singleton的bean实例化时也会实例化。
如果定义为scope="prototype"那么只有在这个bean被使用时,才实例化,而且每次都是一个新对象,多例。


其次,在配置文件中声明bean使得spring可以管理这些bean,比如声明式事物功能,就需要你的bean在配置文件中配置。在实例化时spring会为你声明的bean生成一个代理对象,代理对象在调用bean的方法前后加上事务控制逻辑。
备注:spring管理bean这样在bean初始化过程中,spring可以做很多事情,比如你写一个pojo,spring通过配置就能让他成为rmi,就是在实例化过程,对这个pojo做了更多的处理,不只是简单的new一个对象出来。
在比如只有spring管理的bean才支持spring的AOP机制。可以使用Aspectj和spring集成,对非spring管理的bean施加AOP


再次,减少代码中依赖耦合。

同样的在配置文件中我们可以ref另外一个bean,这样做又是为什么呢?(我们同样可以使用时new一个这个实例)
回答:
把依赖关系定义在配置文件中。
不要再代码中表现依赖关系,这样在依赖关系有变化的情况下,可以通过配置文件的修改达到目的,而不需要修改代码。

 














以上是关于Spring中Bean的管理问题的主要内容,如果未能解决你的问题,请参考以下文章

Spring管理的Bean的生命周期

如何在filter等dubbo自管理组件中注入spring的bean

如何在线程中获取spring 管理的bean

学习笔记——Spring管理第三方bean;Spring中Bean的作用域;Spring中Bean的生命周期;Spring中bean的后置处理器;Spring中自动装配

如何让Spring管理Bean

静态文件获取spring管理的bean对象