下面是一段配置文件
<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才对啊,这么注入进来就能使用到底是为什么呀?

解决方案 »

  1.   

    系统启动时,扫描spring的培植文件,创建那些定义了的bean,放在内存中,作用域应该是application吧.然后spring调用需要被主入对象的set方法,把被主入的对象主入
      

  2.   

    服务器启动时,会解析配置文件,装载这些bean,以及他们之间的依赖关系,启动完了这些bean就已经在内存中了,这就是spring 的核心思想,既ioc,你的程序只要调用这些bean 就行了
      

  3.   

    LoadParamFileFeeAction 在服务器启动时被Spring加载并实例化 并注入它所依赖的其它对象
    动态调用setXXX方法
      

  4.   

    我遇到过这样的问题,系统一启动,首先调用一个servlet,我在servlet中调用了一个类的方法:JobManager.startAllJobs(scheduler);JobManager为一个类,在这个类中我注入了一个bean:private static DeptManagerService deptManagerService;已开始,这个变量我声明为private DeptManagerService deptManagerService,没有带static,运行时我跟踪了一下,服务器启动时,确实已将对这个变量注入了,但是在运行时告诉我,这个变量是null,不明白为什么会这样?这个注入的bean存放位置不应该是application吧,否则怎么会找不到呢?