现有疑惑不解,请求高手们给与指教!
问题是这样的:
我利用struts,hibernate,spring搭建了一个应用程序,这个应用程序分几个模块,于是将请求的处理就分成了多个struts-config.xml配置文件,同样对于各模块所需要用到的bean都另写了不同的applicationContext.xml配置文件管理,然后我将事务管理和数据库连接的配置写了一个公用的配置文件applicationContext_transaction.xml,让其他applicationContext.xml通过import去引用。
以下截了几个图:
web.xml关于struts的配置
WEB-INF/下的struts各配置文件
单个Struts-config.xml配置文件里都有的内容:
所用到得spring配置文件:
如果我这样配置的话,tomcat容器启动的时候通过web.xml去初始化那些个struts-config.xml,每加载一个
struts-config.xml,然后根据我的配置中由value指定的值classpath:/spring/*.xml,那么它会由Spring的
WebApplicationContext去创建一个容器然后创建spring/*.xml下的所有bean实例,显然在Web-INF/下有6个struts-config.xml
配置,那么tomcat启动完后会创建6个springIOC容器,而且每个容器里面都装载了所有的bean实例,这不尽影响了程序的发布时间,
也造成了不必要的内存资源浪费。我后来将每个value值的指定它对应的spring.xml的配置文件,
如改变struts-config-user.xml下的配置内容:value="classpath:/spring/applicationContext-user.xml",其他也对应改了值,
这样了就使得每次加载一个struts-config.xml配置文件只需要加载与该配置文件有关的bean实例就行了,但它还是又单独创建了一个IOC
容器,等于说还是有6个IOC容器被创建,而且每一个容器里面都有事务管理bean和Sessionfactory bean等公用的bean,那么我希望
如果只产生一个IOC容器,而里面又都只有一份公用bean,且不能将所有的applicationContext.xml和struts-config.xml各自整合为一个
配置文件,因为这样不利于分工协同开发,以及后期维护。应该怎么实现了???
注:之所以认为产生了6个IOC容器,是根据我在组件类给其无参构造函数输出一句话,在tomcat启动完后,打印了6次。