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"/>
一致在懷疑表達式的正確性,掩蓋了如下配置
