ssm搭建遇到的問題

1、非數(shù)據(jù)庫連接池使用時,數(shù)據(jù)庫連接用戶名使用${username},現(xiàn)象是連接數(shù)據(jù)使用的用戶名是當前pc端在用用戶名,比如我當前使用的用戶是dell

原因:配置的用戶名的key不能直接使用username,因為在XML中獲取用戶名使用 ${username}獲取的是計算機的賬號名稱??梢孕薷臑?jdbc.username或其他的名稱即可

2、事務管理出現(xiàn)異常,事務不回滾

(1)、容器啟動,打開聲明是事務:

? ??????<!-- 配置基于注解的聲明式事務 -->

<tx:annotation-driven transaction-manager="transactionManager"/>

(2)、代碼如下

@Transactional

@Override

public User queryByUserInfo(User user) throws Exception{

userDao.addUser(user);

throw new Exception("11111");

//throw new RuntimeException("11111");

}

(3)、現(xiàn)象:事務未回滾,數(shù)據(jù)入庫正常

(4)、原因:Spring事務回滾與異常,Spring被事務管理的方法,需要拋出非檢查異常,即運行期異常才能進行回滾

3、Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4e90dc4] was not registered for synchronization because synchronization is not active JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@57e1a67c] will not be managed by Spring

現(xiàn)象:事務沒有被管理,出現(xiàn)異常事務沒有被回滾

懷疑:對于日志中的not比較敏感,從not下手

更改事務管理方式:AOP聲明攔截和注解式事務聲明

對比差異:

注解式操作現(xiàn)象:

Creating a new SqlSession

Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@730a533f]

JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@611ee9e2] will be managed by Spring

找到區(qū)別引起的原因,aop事務配置有問題,果然當前調用方法不符合pointcut規(guī)則

個人原因:想當然的懷疑了自己最不懂的,<aop:pointcut expression="execution(* com.fulin.service.impl.*.*(..))" id="daoMethod"/>

一致在懷疑表達式的正確性,掩蓋了如下配置


?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容