ssm搭建遇到的问题

1、非数据库连接池使用时,数据库连接用户名使用${username},现象是连接数据使用的用户名是当前pc端在用用户名,比如我当前使用的用户是dell

原因:配置的用户名的key不能直接使用username,因为在XML中获取用户名使用 ${username}获取的是计算机的账号名称。可以修改为 jdbc.username或其他的名称即可

2、事务管理出现异常,事务不回滚

(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)、现象:事务未回滚,数据入库正常

(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

现象:事务没有被管理,出现异常事务没有被回滚

怀疑:对于日志中的not比较敏感,从not下手

更改事务管理方式:AOP声明拦截和注解式事务声明

对比差异:

注解式操作现象:

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

找到区别引起的原因,aop事务配置有问题,果然当前调用方法不符合pointcut规则

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

一致在怀疑表达式的正确性,掩盖了如下配置


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容