ssm搭建遇到的问题

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

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

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

(1)、容器启动,打开声明是事务:

        

(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规则

个人原因:想当然的怀疑了自己最不懂的,

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


你可能感兴趣的:(ssm搭建遇到的问题)