<!--使用聲明式事務配置註解驅動-->
<!--配置事務攔截器--> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager" ref="transactionManager"/> <!-- 配置事務屬性 --> <property name="transactionAttributes"> <props> <!-- key表明的是業務方法的正則式匹配 ,而其內容能夠配置各種事務定義參數--> <prop key="insert*">PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED</prop> <prop key="save*">PROPAGATION_REQUIRED,ISOLATION_READ_ UNCOMMITTED</prop> <prop key="add*">PROPAGATION_REQUIRED,ISOLATION_READ_ UNCOMMITTED</prop> <prop key="select*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="del*">PROPAGATION_REQUIRED,ISOLATION_READ_ UNCOMMITTED</prop> <prop key="remove*">PROPAGATION_REQUIRED,ISOLATION_READ_ UNCOMMITTED</prop> <prop key="update*">PROPAGATION_REQUIRED,ISOLATION_READ_ UNCOMMITTED</prop> </props> </property> </bean>
<!--指明事務攔截器攔截哪些類--> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <value>*ServiceImpl</value> </list> </property> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> </list> </property> </bean>
BeanName屬性告訴Spring如何攔截類。因爲聲明爲*ServiceImpl,全部關於Service是現實類都會被其攔截,而後interceptorNames則是定義事務攔截器,這樣對應的類和方法就會被事務管理器所攔截了。