日期:2014-05-18  浏览次数:20723 次

请教spring高手一个问题,依赖注入的bean,到底被存到什么地方了?
下面是一段配置文件
<bean   id= "loadBean "   class= "com.bytime.toss.framework.web.model.LoadBean ">
<property   name= "dataSource ">
<ref   bean= "dataSource "   />
</property>
</bean>

<bean   name= "/LoadParamFileFeeAction "   class= "com.bytime.toss.finance.charge.web.action.LoadParamFileFeeAction ">
<property   name= "loadBean ">
<ref   local= "loadBean "   />
</property>

<property   name= "deptManagerService ">
<ref   local= "deptManagerService "   />
</property>
</bean>
这里给LoadParamFileFeeAction注入了一个loadBean,这样在LoadParamFileFeeAction中可以随意使用这个loadBean了,但是我就是不明白,这个loadBean在系统启动时,注入LoadParamFileFeeAction后,他被放到了什么地方?第一次我们通过JSp访问LoadParamFileFeeAction时,LoadParamFileFeeAction也是新生成的啊,按照道理说,他要使用loadBean,也应该是new一个loadBean才对啊,这么注入进来就能使用到底是为什么呀?

------解决方案--------------------
系统启动时,扫描spring的培植文件,创建那些定义了的bean,放在内存中,作用域应该是application吧.然后spring调用需要被主入对象的set方法,把被主入的对象主入
------解决方案--------------------
服务器启动时,会解析配置文件,装载这些bean,以及他们之间的依赖关系,启动完了这些bean就已经在内存中了,这就是spring 的核心思想,既ioc,你的程序只要调用这些bean 就行了
------解决方案--------------------
LoadParamFileFeeAction 在服务器启动时被Spring加载并实例化 并注入它所依赖的其它对象
动态调用setXXX方法