當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring框架关于事务处理的API和使用步骤
生活随笔
收集整理的這篇文章主要介紹了
Spring框架关于事务处理的API和使用步骤
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Spring中的事務管理全部要經過事務管理器來實現.
因此無論是注解的方式還是xml的方式實現的事務都必須要配置事務管理器.
因為事務是基于數據庫連接的,所以事務管理器依賴于連接池創建的連接,因此事務管理器需要注入連接池屬性.
一.Spring基于注解的事務管理
spring 關于事務管理的3個API:
-
PlatformTransactionManager
①DataSourceTransactionManager:JDBC的事務管理器
②HibernateTransactionManager:Hibernate的事務管理器 -
TransactionDefinition:
-
TransactionStatus:
①導入jar(4個核心+日志+spring-jdbc+spring-tx)
②把數據庫連接池交給spring管理
<!-- 引入外部資源文件 --> <context:property-placeholder location="classpath:db.properties"/><!-- 配置數據庫連接池 --><bean id="datasource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}"></property><property name="url" value="${jdbc.url}"></property><property name="username" value="${jdbc.username}"></property><property name="password" value="${jdbc.password}"></property></bean>③將事務管理器交給spring管理并注入數據源
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 注入數據源 --><property name="dataSource" ref="datasource"></property></bean>④開啟spring 管理事務的注解驅動,與事務管理器對應
<tx:annotation-driven transaction-manager="transactionManager"/>⑤在需要進行事務管理的業務方法上加@Transactional注解即可.
二.Spring基于Xml的事務管理:
因為spring把事務管理的過程(取消連接的自動提交,回滾等)封裝在了事務管理器中,因此這些抽取出來的方法和過程應該作為切面類作用在業務方法中.
①將事務管理器交給spring 管理,并作為一個切面類
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 注入數據源 --><property name="dataSource" ref="datasource"></property></bean>②將通知作用在切面類上,和平臺事務管理器進行關聯
<!-- 通知 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!-- 傳播行為 --><tx:method name="save*" propagation="REQUIRED" /><tx:method name="insert*" propagation="REQUIRED" /><tx:method name="add*" propagation="REQUIRED" /><tx:method name="create*" propagation="REQUIRED" /><tx:method name="delete*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /><tx:method name="find*" propagation="SUPPORTS" read-only="true" /><tx:method name="select*" propagation="SUPPORTS" read-only="true" /><tx:method name="get*" propagation="SUPPORTS" read-only="true" /><tx:method name="query*" propagation="SUPPORTS" read-only="true" /></tx:attributes></tx:advice>③將切入點表達式作用在通知上,和通知進行關聯
<aop:config><aop:advisor advice-ref="txAdvice"pointcut="execution(* com.sms.spring.service.impl.*(..))" /></aop:config>三.關于事務的四個屬性
- 事務的傳播行為:Propagation
用法:@Transactional(propagation=Propagation.REQUIRED):設置為必須使用調用者的事務 - 事務的隔離級別:Isolation
用法:@Transactional(isolation=Isolation.READ_COMMITTED):設定隔離級別為讀已提交 - 事務的超時回滾:timeOut
用法:@Transactional(timeout=3):事務執行三秒未完成后進行強制回滾 - 事務的是否只讀:read-only
用法:@Transactional(readOnly=true):設定為只讀
總結
以上是生活随笔為你收集整理的Spring框架关于事务处理的API和使用步骤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring框架基于AspectJ的AO
- 下一篇: 跳转路径时资源路径加/和不加/的区别