为了项目文件结构清晰和统一管理,我把Spring的配置文件统一放到WEB-INF/conf/spring目录里 把Hibernate的配置文件统一放到WEB-INF/conf/hibernate目录里.
这里需要配置web.xml文件
<?
xml version="1.0" encoding="UTF-8"
?>
< web-app version ="2.4"
xmlns ="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
< context-param >
< param-name > contextConfigLocation </ param-name >
< param-value > /WEB-INF/conf/spring/applicationContext.xml </ param-value >
</ context-param >
<!-- 配置spring,不能用listener,版本问题 -->
< servlet >
< servlet-name > SpringContextServlet </ servlet-name >
< servlet-class > org.springframework.web.context.ContextLoaderServlet </ servlet-class >
< load-on-startup > 1 </ load-on-startup >
</ servlet >
< servlet >
< servlet-name > springapp </ servlet-name >
< servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class >
< init-param >
< param-name > contextConfigLocation </ param-name >
< param-value > /WEB-INF/conf/spring/springapp-servlet.xml </ param-value >
</ init-param >
< load-on-startup > 2 </ load-on-startup >
</ servlet >
......
</ web-app >
< web-app version ="2.4"
xmlns ="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
< context-param >
< param-name > contextConfigLocation </ param-name >
< param-value > /WEB-INF/conf/spring/applicationContext.xml </ param-value >
</ context-param >
<!-- 配置spring,不能用listener,版本问题 -->
< servlet >
< servlet-name > SpringContextServlet </ servlet-name >
< servlet-class > org.springframework.web.context.ContextLoaderServlet </ servlet-class >
< load-on-startup > 1 </ load-on-startup >
</ servlet >
< servlet >
< servlet-name > springapp </ servlet-name >
< servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class >
< init-param >
< param-name > contextConfigLocation </ param-name >
< param-value > /WEB-INF/conf/spring/springapp-servlet.xml </ param-value >
</ init-param >
< load-on-startup > 2 </ load-on-startup >
</ servlet >
......
</ web-app >
可以看到,需要加入contextConfigLocation参数,用它指定applicationContext.xml的位置.
如果要是用Spring-MVC,则需要在org.springframework.web.servlet.DispatcherServlet里指定contextConfigLocation. 如果有多个servlet文件则用逗号分隔.
applicationContext.xml里的SessionFactory:
<
bean
id
="sessionFactory"
class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
>
< property name ="dataSource" ref ="dataSource" />
< property name ="mappingDirectoryLocations" >
< list >
< value > /WEB-INF/conf/hibernate </ value >
</ list >
</ property >
< property name ="hibernateProperties" >
< props >
< prop key ="hibernate.dialect" >
org.hibernate.dialect.Oracle9Dialect
</ prop >
< prop key ="hibernate.show_sql" > true </ prop >
< prop key ="hibernate.generate_statistics" > true </ prop >
< prop key ="hibernate.hbm2ddl.auto" > update </ prop >
</ props >
</ property >
</ bean >
< property name ="dataSource" ref ="dataSource" />
< property name ="mappingDirectoryLocations" >
< list >
< value > /WEB-INF/conf/hibernate </ value >
</ list >
</ property >
< property name ="hibernateProperties" >
< props >
< prop key ="hibernate.dialect" >
org.hibernate.dialect.Oracle9Dialect
</ prop >
< prop key ="hibernate.show_sql" > true </ prop >
< prop key ="hibernate.generate_statistics" > true </ prop >
< prop key ="hibernate.hbm2ddl.auto" > update </ prop >
</ props >
</ property >
</ bean >
对于hibernate,在spring的applicationContext.xml的sessionFactory里要添加mappingDirectoryLocations指定hibernate的map文件目录.