日期:2014-05-17  浏览次数:20590 次

配置spring时的问题
就是ApplicationContext分开写怎么写应该


<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
                <property name="mappingResources">
<list>
<value>com/snsoft/tutorial/domain/TUser.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
</bean>   


如上面的代码 ,我想把list里面这一段分出一个独立的配置文件,这个独立的配置文件应该怎么写,怎么引入?


     <bean id="userDao" class="com.snsoft.tutorial.dao.UserDAOImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

第二个问题就是dao之类的了 我想的还是加载时候分开加载 把相关模块的dao配置分出来写,一个模块使用一个bean配置,然后再加载

------解决方案--------------------
第一、可以把所有实体类和hbm.xml按照业务划分,然后分别放在不同的文件夹下,比如com/entity/part1,com/entity/part2...
第二、修改你的applicationContext.xml文件,按业务分离出相应的bean到另外一个配置文件比如:applicationContext_1.xml,然后在applicationContext.xml通过以下方式引入外部文件:
<import resource="applicationContext_1.xml"/>
,注意路径。
第三、applicationContext.xml中定义sessionFactory时,list可以指定加载
<value>classpath:com/entity/part1</value>
这部分实体文件;而applicationContext_1.xml定义sessionFactory时,可以指定加载
<value>classpath:com/entity/part2</value>
这部分实体文件。注意这两个sessionFactory不能同名,因为最终applicationContext_1.xml要导入applicationContext.xml中,避免命名冲突。
第四、修改web.xml,实现spring多配置文件的引用:

<!-- 加载applicationContext文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
                <!-- 扫描加载以applicationContext开头的配置文件,*是通配符,这些文件都放在src下 ->
<param-value>classpath:applicationContext*.xml</param-value>
</context-param>