SpringBoot 宣告式事務
springboot的事務也主要分為兩大類,一是xml宣告式事務,二是註解事務.
可以使用 @ImportResource("classpath:transaction.xml")
引入該xml的配置,xml的配置如下
12345678910111213141516171819202122232425262728 | <?xml version= "1.0" encoding= "UTF-8" ?> xsi:schemaLocation=" http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans.xsd http: //www.springframework.org/schema/tx http: //www.springframework.org/schema/tx/spring-tx.xsd http: //www.springframework.org/schema/aop http: //www.springframework.org/schema/aop/spring-aop.xsd"> <bean id= "txManager" class = "org.springframework.jdbc.datasource.DataSourceTransactionManager" > <property name= "dataSource" ref= "dataSource" ></property> </bean> <tx:advice id= "cftxAdvice" transaction-manager= "txManager" > <tx:attributes> <tx:method name= "query*" propagation= "SUPPORTS" read-only= "true" ></tx:method> <tx:method name= "get*" propagation= "SUPPORTS" read-only= "true" ></tx:method> <tx:method name= "select*" propagation= "SUPPORTS" read-only= "true" ></tx:method> <tx:method name= "*" propagation= "REQUIRED" rollback- for = "Exception" ></tx:method> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id= "allManagerMethod" expression= "execution (* com.exmaple.fm..service.*.*(..))" /> <aop:advisor advice-ref= "txAdvice" pointcut-ref= "allManagerMethod" order= "0" /> </aop:config> </beans> |
springboot 啟動類如下:
?1234567891011 | package com.example.fm; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportResource; @ImportResource ( "classpath:transaction.xml"
|