搭建思想说明:
运用Sping实现的代理对象(TransactionProxyFactoryBean)进行配置;TransactionProxyFactoryBean对象中需配上 事务拦截器 + 目标对象(等待加事务的DaoImpl对象) + 事务传播特性;
Struts的Action中用到的Dao换为TransactionProxyFactoryBean对象;
1.引入Spring和Struts的jar包
2.要配事务的对象要求实现了接口并且继承spring的对象JdbcDaoSupport
3.Spring配置文件
<!-- 数据库连接池配置(mysql) -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://127.0.0.1:3306/test</value>
</property>
<property name="maxActive">
<value>50</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>password</value>
</property>
</bean>
<!-- JDBC事务拦截配置 -->
<bean id="JDBCTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource"><ref local="dataSource"/></property>
</bean>
<!-- 目标对象配置(需要加上事务的DaoImpl对象) -->
<bean id="dataJDBCImpl" class="com.xiaoxin.struts.DataJDBCImpl">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<!-- Spring实现的代理对象 对需要加事务的类进行封装-->
<bean id="dataManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager"> <!—- JDBC事务管理器 -->
<ref bean="JDBCTransactionManager" />
</property>
<property name="target"> <!-- 目标对象 -->
<ref local="dataJDBCImpl"/>
</property>
<property name="transactionAttributes"> <!-- 事务的传播特性 -->
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="del*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!-- Struts的Action对象放入到Spring的管理中 -->
<bean name="/data" class="com.xiaoxin.struts.DataAction">
<property name="dm" ref="dataManager"/>
</bean>