一、首先是jar包
1、 hibernate-distribution-3.6.10.Final
hibernate3.jar
/lib/required/*.jar 如果和Spring2.5集成 lib下required中的commons-collections-3.1.jar与Spring2.5相同(可去一个)
2、 hibernate-annotations-3.4.0.GA
lib/ejb3-persistence.jar
lib/jpa/hibernate-jpa-2.0-api-1.0.1.Final.jar
3、slf4j-1.6.6
slf4j-nop-1.5.2.jar
4、mysql-connector-java-5.1.21
mysql-connector-java-5.1.21-bin.jar
4、 spring2.5.6
/dist/spring.jar
/lib/aspectj/*.jar
/lib/jakarta-commons/commons-collections.jar,commons-dbcp.jar,commons-logging.jar,commons-pool.jar
/lib/j2ee/common-annotations.jar
5、 struts2.3.4.1 webapp
commons-fileupload.jar
commons-io-.jar
freemarker-.jar
ognl-.jar
struts2-core-.jar
xwork-.jar
struts2-spring-plugin-.jar
commons-lang-.jar
commons-lang3-.jar
二、然后是配置文件
1、web.xml
<!-- struts2 start -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.do</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<!-- struts2 end -->
<!-- Spring ApplicationContext配置文件的路径,可使用通配符,多个路径用,号分隔,此参数用于后面的Spring-Context
loader <param-value>/WEB-INF/spring/app*.xml,classpath:app*.xml</param-value> -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/config/app*.xml</param-value>
</context-param>
<!-- spring start -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- spring end -->
2、applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- 定义受环境影响易变的变量 -->
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>classpath:/config/properties/application.properties</value>
</list>
</property>
</bean>
<!-- 数据源配置,使用dbcp连接-->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="${jdbc.url}">
</property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!--
配置SessionFactory,由Spring容器来管理Hibernate
非Annotation时,使用org.springframework.orm.hibernate3.LocalSessionFactoryBean,
它注入实体类的方式是setMappingResources(),而Hibernate Annotation所用的映射方式 不是mapping
resource,而是mapping class,这就要用到LocalSessionFactoryBean的子类
AnnotationSessionFactoryBean了.因为AnnotationSessionFactoryBean它支持实体的注入
方式setAnnotatedClasses,即对应Hibernate中的mapping class.参见这两个类的源代码.
-->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
${hibernate.dialect}
</prop>
<prop key="hibernate.show_sql">
${hibernate.show_sql}
</prop>
<prop key="hibernate.format_sql">
${hibernate.format_sql}
</prop>
<prop key="javax.persistence.validation.mode">
none
</prop>
<prop key="hibernate.query.factory_class">
<!--
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
-->
org.hibernate.hql.ast.ASTQueryTranslatorFactory
</prop>
</props>
</property>
<property name="packagesToScan" value="com.index.star.users.model" />
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!-- 配置事务的传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!--
<tx:method name="save*" propagation="REQUIRED" /> <tx:method
name="update*" propagation="REQUIRED" /> <tx:method name="delete*"
propagation="REQUIRED" /> <tx:method name="*send*"
propagation="REQUIRED" /> <tx:method name="attach*"
propagation="REQUIRED" /> <tx:method name="*" read-only="true" />
<tx:method name="find*" read-only="true" />
-->
<tx:method name="get*" read-only="true" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 哪些类的哪些方法参与事务 -->
<aop:config>
<aop:pointcut id="allServiceMethod"
expression="execution(* com.index.star.users.service.*.*.*(..))" />
<aop:advisor pointcut-ref="allServiceMethod" advice-ref="txAdvice" />
</aop:config>
<!-- 配置spring application的 getbean()工具类
<bean id="SpringContextHolde" class="common.utils.spring.SpringContextHolder"
scope="singleton" /> -->
<!-- 使Spring关注Annotation -->
<context:annotation-config />
<!-- 让Spring通过自动扫描来查询和管理Bean -->
<context:component-scan base-package="com.index" />
</beans>
3、struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 文件上传中整个请求内容允许的最大字节数为15M -->
<constant name="struts.multipart.maxSize" value="15097152" />
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.action.extension" value="do" />
<include file="config/struts2/*.xml" />
</struts>