Spring 问题?高手指教!!! 在SSh整合的项目中,如果想把spring文件分开管理,也就是有多个spring 的配置文件,我想问的是:这几个配置文件是如何联系起来的?例如:Spring配置文件: appl.xml 和 bppl.xml,bppl.xml内的bean要用到appl.xml中的bean(<ref bean="test"/>),请问这怎么做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以有个总的xml。import几个子文件。系统启动的时候读取这个总的xml我们单位是这样的 在web.xml里配置<param-name>contextConfigLocation</param-name><param-value> 配置文件路径/*pp*.xml</param-value> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml </param-value></context-param> <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <import resource = "XXXXXX.xml"/> <import resource = "XXXXXX.xml"/></beans> 使用import简化spring的配置文件对于spring配置文件的编写,我想,对于经历过庞大项目的人,都有那种恐惧的心理,太多的配置文件。不过,分模块都是大多数人能想到的方法,但是,怎么分模块,那就是仁者见仁,智者见智了。我的策略是使用import。基本代码格式如下 web.xml ...... <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring-config/applicationContext.xml </param-value> </context-param> ...... web.xml文件中只需制定一个文件在/WEB-INF/spring-config/目录下包含了所有spring配置文件,包括一个总配置文件,以及各个模块的配置文件applicationContext.xml <?xml version="1.0" encoding="gb2312"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans> <import resource="CTIContext.xml" /> <import resource="customerContext.xml" /> <import resource="customerServingContext.xml" /> <import resource="manageContext.xml" /> <import resource="routineContext.xml" /> <import resource="systemContext.xml" /> ........... 包括数据源,以及事务的基本配置 ........... 这时所有DAO的基类,各个模块的DAO都配置成继承这个类,就省去了在配置sessionFactory的麻烦 <!-- Base DAO --> <bean id="baseDAO" abstract="true" class="com.mycompany.myproject.framework.BaseDAOImpl"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean></beans>applicationContext.xml文件中使用import的方式导入有模块配置文件,以后若有新模块的加入,那就可以简单修改这个文件了system模块配置文件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans> <!-- DAO --> <bean id="userDAO" parent="baseDAO" class="com.mycompany.myproject.module.system.dao.UserDAOImpl"> <constructor-arg> <value>com.mycompany.myproject.domain.system.User</value> </constructor-arg> </bean> <bean id="agentDAO" parent="baseDAO" class="com.mycompany.myproject.module.system.dao.AgentDAOImpl"> <constructor-arg> <value>com.mycompany.myproject.domain.system.Agent</value> </constructor-arg> </bean> <bean id="agentGroupDAO" parent="baseDAO" class="com.mycompany.myproject.module.system.dao.AgentGroupDAOImpl"> <constructor-arg> <value> com.mycompany.myproject.domain.system.AgentGroup </value> </constructor-arg> </bean> <!-- Service --> <bean id="userService" parent="baseTransactionProxy"> <property name="target"> <bean class="com.mycompany.myproject.module.system.service.UserServiceImpl"> <property name="userDAO" ref="userDAO" /> </bean> </property> </bean></beans>可以仔细看这个文件是怎么使用spring中abstract的方式申明继承关系的。我看到有不少人采用spring自带的策略,把DAO与service层的配置分开,我认为这种策略不好,因为大多数时候,这两部分都是需要同时变动的,若放在两个文件中的话,那就会增加了每次修改配置文件的时间,而且,不利于重用。若是结合我的上篇文章(关于spring单元测试的)的策略,那么这种方式就会发挥更大的威力 还要怎么顶?? 要没用import,要么建立父子关系 直接的方法就这样:<web-app> <display-name>SSH</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/classes/applications-common.xml,/WEB-INF/classes/applications-services.xml,/WEB-INF/classes/applications-dao.xml,/WEB-INF/classes/applications-file.xml </param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param>这就是几个多个Spring配置文件/WEB-INF/classes/applications-common.xml,/WEB-INF/classes/applications-services.xml,/WEB-INF/classes/applications-dao.xml,/WEB-INF/classes/applications-file.xml就如上关联,采用楼上楼说的 一个总的配置文件中引入其他的也是不错的选择! 为什么从jsp页面跳不到servlet页面中 公文流转系统 jsp页面数据传递功能? Ajax 跨域访问 求助 字符乱码问题 想学Java,请高人推荐入门教材 请教师兄们!JSP服务器怎么搭?想向J2EE方向学习 使用JBuilder9,tomcat的版本是4.0,为什么还无法通过import javax.servlet.*;这一句??? JDBC错误,WEBLOGIC7.0+SQLSERVER2000,请高手们帮忙 Java,LODOP打印,图片不显示的问题。 怎样保存客户端的HTML代码到后台 java里面如何返回两个日期之间的每一天,帮忙啦!!!!!!!!!!!
<param-name>contextConfigLocation</param-name>
<param-value>
配置文件路径/*pp*.xml
</param-value>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml
</param-value>
</context-param>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<import resource = "XXXXXX.xml"/>
<import resource = "XXXXXX.xml"/>
</beans>
基本代码格式如下
web.xml
......
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-config/applicationContext.xml
</param-value>
</context-param>
......
web.xml文件中只需制定一个文件
在/WEB-INF/spring-config/目录下包含了所有spring配置文件,包括一个总配置文件,以及各个模块的配置文件
applicationContext.xml
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans> <import resource="CTIContext.xml" />
<import resource="customerContext.xml" />
<import resource="customerServingContext.xml" />
<import resource="manageContext.xml" />
<import resource="routineContext.xml" />
<import resource="systemContext.xml" />
...........
包括数据源,以及事务的基本配置
...........
这时所有DAO的基类,各个模块的DAO都配置成继承这个类,就省去了在配置sessionFactory的麻烦
<!-- Base DAO -->
<bean id="baseDAO" abstract="true"
class="com.mycompany.myproject.framework.BaseDAOImpl">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean></beans>applicationContext.xml文件中使用import的方式导入有模块配置文件,以后若有新模块的加入,那就可以简单修改这个文件了
system模块配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans> <!-- DAO -->
<bean id="userDAO" parent="baseDAO"
class="com.mycompany.myproject.module.system.dao.UserDAOImpl">
<constructor-arg>
<value>com.mycompany.myproject.domain.system.User</value>
</constructor-arg>
</bean> <bean id="agentDAO" parent="baseDAO"
class="com.mycompany.myproject.module.system.dao.AgentDAOImpl">
<constructor-arg>
<value>com.mycompany.myproject.domain.system.Agent</value>
</constructor-arg>
</bean> <bean id="agentGroupDAO" parent="baseDAO"
class="com.mycompany.myproject.module.system.dao.AgentGroupDAOImpl">
<constructor-arg>
<value>
com.mycompany.myproject.domain.system.AgentGroup
</value>
</constructor-arg>
</bean> <!-- Service -->
<bean id="userService" parent="baseTransactionProxy">
<property name="target">
<bean
class="com.mycompany.myproject.module.system.service.UserServiceImpl">
<property name="userDAO" ref="userDAO" />
</bean>
</property>
</bean></beans>
可以仔细看这个文件是怎么使用spring中abstract的方式申明继承关系的。
我看到有不少人采用spring自带的策略,把DAO与service层的配置分开,我认为这种策略不好,因为大多数时候,这两部分都是需要同时变动的,若放在两个文件中的话,那就会增加了每次修改配置文件的时间,而且,不利于重用。
若是结合我的上篇文章(关于spring单元测试的)的策略,那么这种方式就会发挥更大的威力
还要怎么顶?? 要没用import,要么建立父子关系
<web-app>
<display-name>SSH</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applications-common.xml,/WEB-INF/classes/applications-services.xml,/WEB-INF/classes/applications-dao.xml,/WEB-INF/classes/applications-file.xml
</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
这就是几个多个Spring配置文件
/WEB-INF/classes/applications-common.xml,
/WEB-INF/classes/applications-services.xml,
/WEB-INF/classes/applications-dao.xml,
/WEB-INF/classes/applications-file.xml
就如上关联,
采用楼上楼说的 一个总的配置文件中引入其他的也是不错的选择!