1.事务代理: 继承 TransactionProxyFactoryBean
<!-- 事务代理 --> <bean id="transactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> <property name="transactionManager"> <ref bean="transactionManager" /> </property> <property name="transactionAttributes"> <props> <prop key="select*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <!-- TransactionManager定义。 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- MyBatis transactionTemplate --> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager" ref="transactionManager" /> </bean> <!-- MyBatis sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis.xml" /> <property name="mapperLocations"> <list> <value>classpath:com/desk/user/core/dao/**/*Mapper.xml </value> </list> </property> </bean> <!-- MyBatis sqlSessionTemplate --> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory" /> </bean>
业务处理bean 注入方式
<bean id="userService" parent="transactionProxy"> <property name="target"> <bean class="com.desk.user.core.service.user.UserServiceImpl" /> </property> </bean>
2.事物代理:BeanNameAutoProxyCreator beanName 代理
<!--事务拦截器 --> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager" ref="transactionManager" /> <property name="transactionAttributes"> <props> <prop key="select">PROPAGATION_REQUIRED,readOnly</prop> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="proxyTargetClass"> <value>true</value> </property> <property name="beanNames"> <list> <value>*ServiceImpl</value> </list> </property> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> </list> </property> </bean> <!--异常和超时拦截器 --> <bean id="exceptionHandler" class="com.desk.common.handler.ExceptionHandler" /> <bean id="timeHandler" class="com.desk.common.handler.TimeHandler" /> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="proxyTargetClass"> <value>true</value> </property> <property name="beanNames"> <list> <!-- <value>*Render</value> <value>*Controller</value> <value>*BOImpl</value> --> <value>*ServiceImpl</value> <value>*DAOImpl</value> </list> </property> <property name="interceptorNames"> <list> <value>exceptionHandler</value> <value>timeHandler</value> </list> </property> </bean> <!-- TransactionManager定义。 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- MyBatis transactionTemplate --> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager" ref="transactionManager" /> </bean> <!-- MyBatis sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis.xml" /> <property name="mapperLocations"> <list> <value>classpath:com/desksoft/oceanus/user/core/dao/**/*Mapper.xml </value> </list> </property> </bean> <!-- MyBatis sqlSessionTemplate --> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory" /> </bean>
业务处理bean注入
<!-- service 注入 --> <bean id="userService" class="com.desksoft.oceanus.user.core.service.user.UserServiceImpl" />