Spring事物配置檔案
阿新 • • 發佈:2018-12-17
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd "> <!-- 將事務管理器作為一個bean配置到spring的容器的 --> <!-- 使用的是jdbc所以使用DataSourceTransactionManager --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 事務管理器需要注入一個dataSource --> <property name="dataSource" ref="dataSource" /> </bean> <!-- 第二步:定義通知,通知中要處理的就是事務 --> <!-- 配置事務的隔離性和傳播特性 --> <!-- 相當於一個AOP的切面 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <!-- 配置事務的屬性定義 --> <tx:attributes> <!-- 配置具體的方法的事務屬性 isolation//事務的隔離級別,預設是按資料庫的隔離級別來 propagation//事務的傳播行為,預設是同一個事務 timeout="-1":事務的超時時間,預設值使用資料庫的超時時間。 read-only="false":事務是否只讀,預設可讀寫。 rollback-for:遇到哪些異常就回滾,其他的都不回滾 no-rollback-for:遇到哪些異常不回滾,其他的都回滾。和上面互斥的 --> <tx:method name="transfer" isolation="DEFAULT" propagation="REQUIRED" timeout="-1" read-only="false" /> <!-- 支援萬用字元 要求service中 方法名字必須符合下面的規則 --> <tx:method name="save*" /> <tx:method name="update*" /> <tx:method name="delete*" /> <tx:method name="insert*" /> <tx:method name="find*" read-only="true" /> <tx:method name="query*" read-only="true" /> <tx:method name="select*" read-only="true" /> <tx:method name="get*" read-only="true" /> </tx:attributes> </tx:advice> <!-- 第三步:配置切入點,讓通知關聯切入點,即事務控制業務層的方法 --> <aop:config> <!-- 切入點 --> <aop:pointcut expression="bean(*Service)" id="txPointcut"/> <!-- 切面 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/> </aop:config> </beans>