在SSh整合的项目中,如果想把spring文件分开管理,也就是有多个spring 的配置文件,我想问的是:这几个配置文件是如何联系起来的?例如:Spring配置文件: appl.xml  和  bppl.xml,
bppl.xml内的bean要用到appl.xml中的bean(<ref bean="test"/>),请问这怎么做?

解决方案 »

  1.   

    可以有个总的xml。import几个子文件。系统启动的时候读取这个总的xml我们单位是这样的
      

  2.   

    在web.xml里配置
    <param-name>contextConfigLocation</param-name>
    <param-value>
      配置文件路径/*pp*.xml
    </param-value>
      

  3.   

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    /WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml
    </param-value>
    </context-param>
      

  4.   

    <?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>
      

  5.   

     使用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单元测试的)的策略,那么这种方式就会发挥更大的威力
      

  6.   


    还要怎么顶?? 要没用import,要么建立父子关系
      

  7.   

    直接的方法就这样:
    <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
    就如上关联,
    采用楼上楼说的 一个总的配置文件中引入其他的也是不错的选择!