spring整合struts2和JPA
Bos的配置文件的配置
注:本文档整理的是Maven管理的项目中个配置文件的搭建
第一部分(web.xml):
- 在bos中配置spring整合struts2 时: <!-- 扫描 @Server @Controller @Repository -->
- <context:component-scan base-package="com.shuguolili"/>
a) 要在web.xml问文件中配置spring配置文件的位置:
<!-- spring配置文件位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
b) 在web.xml文件中配置核心监听器
<!-- spring核心监听器 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
c) 在struts2的核心过滤器(拦截器)
<filter>
<filter-name>struts</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
d) 配置将开启事务和关闭事务提前到web层的注解(放在action中去关闭)
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
第二部分:(service层applicationContext.xml)
- 在applicationContext.xml文件里开启spring的注解扫描
- 声明事务管理器配置
<!-- JPA事务管理器 -->(不止一种事务管理器)
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
3.开启注解管理事务
<!-- 开启注解管理事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
4.配置加载数据库的配置(配置连接数据库所需的账号密码等)
<!-- 加载properties文件 -->
<context:property-placeholder location="classpath:config.properties" />
5.数据库连接池配置
<!-- 数据库连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.user}" />
<property name="password" value="${jdbc.password}" />
</bean>
6.JPA的配置
<!-- 进行JPA配置 -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<!-- 注入连接池 -->
<property name="dataSource" ref="dataSource" />
<!-- 配置实体类注解扫描 -->找到数据库和实体类的映射
<property name="packagesToScan" value="cn.itcast.bos.domain" />
<!-- 持久化的提供者 -->真正操作数据库的对象
<property name="persistenceProvider">
<bean class="org.hibernate.ejb.HibernatePersistence" />
</property>
<!-- Hibernate JPA的适配器 -->配置了数据库的方言,数据库类型,数据库建表方式,是否打印sql语句
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="true" /><!-- 是否自动创建表 -->
<property name="database" value="ORACLE" /><!-- 数据库 -->
<property name="databasePlatform"
value="org.hibernate.dialect.Oracle10gDialect"></property><!-- 数据库方言 -->
<property name="showSql" value="true" /><!-- 是否打印SQL语句 -->
</bean>
</property>
<!-- JPA的方言 -->
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
</property>
</bean>
7.整合spring data jpa:告诉jpa我的dao层在哪
<jpa:repositories base-package="cn.itcast.bos.dao"></jpa:repositories>