導航:首頁 > 編程語言 > java註解事務

java註解事務

發布時間:2022-05-17 18:05:52

java中 spring 的事務問題

最近在項目的時候碰到pring事務不起作用的情況,後來解決了,這里我匯總下:

1、首先使用如下代碼 確認你的bean 是代理對象嗎?
必須是Spring定義(通過XML或註解定義都可以)的Bean才接受事務。
直接new出來的對象添加事務是不起作用的。
可以通過以下方式判斷是否是代理對象:

AopUtils.isAopProxy(Object object)
AopUtils.isCglibProxy(Object object) //cglib
AopUtils.isJdkDynamicProxy(Object object) //jdk動態代理

2、入口函數必須是public,否則事務不起作用。這一點由Spring的AOP特性決定的。

3、切入點配置錯誤。
<!-- 使用annotation註解方式配置事務 -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<!--使用切面方式配置事務-->
<tx:advice id="txadvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" isolation="READ_COMMITTED" propagation="REQUIRED" rollback-for="java.lang.Exception" />
</tx:attributes>
</tx:advice>

<aop:config>
<aop:pointcut id="pointcut" expression="execution(* com.tyyd..*Service.do*(..))"/>
<aop:advisor advice-ref="txadvice" pointcut-ref="pointcut"/>
</aop:config>

4、如果你使用了springmvc,可能是context:component-scan重復掃描引起的:

5、如使用mysql且引擎是MyISAM造成的(因為不支持事務),改成InnoDB即可。

② java中的事務

如果你用Spring框架,Spring中可以實現事務管理,在spring 配置文件中配置事務管理器,也可以使用Spring註解式事務,在方法上加上@Transactional註解。
@Transactional
public void save() {
//你的代碼邏輯

}
如果沒有使用Spring框架,可以用JDBC處理事務,如下:
try{
con.setAutoCommit(false);//開啟事務 ......
con.commit();//try的最後提交事務
} catch() {
con.rollback();//回滾事務
}

閱讀全文

與java註解事務相關的資料

熱點內容
php獲取上個月時間戳 瀏覽:574
怎麼設置oppo手機app密碼 瀏覽:360
jra格式下載哪個文件夾 瀏覽:658
蘋果手機怎麼刪除手機上的app 瀏覽:343
單片機熱敏電阻溫度控制 瀏覽:82
方舟私人伺服器的服主怎麼刷物資 瀏覽:454
重裝系統提示加密鎖 瀏覽:625
為什麼下載的音樂要加密 瀏覽:964
因為沒有打開的文檔所以這一命令無效 瀏覽:720
電腦文件夾數據損壞 瀏覽:716
java打賞源碼搭建 瀏覽:365
pdf32 瀏覽:256
植發加密100天效果 瀏覽:959
離心壓縮機檢修規程 瀏覽:432
如何收聽安卓手機發來的鏈接 瀏覽:401
福建微法院app怎麼用 瀏覽:210
android陀螺儀應用 瀏覽:721
新加坡加密貨幣騙局 瀏覽:912
電腦文件夾打開自動變為全屏 瀏覽:971
簡易單斷面計演算法 瀏覽:852