错误描述
今天在学习 Spring事务的时候 遇到了一个很坑的问题 , 我自己把我自己坑了 , 就是 我在使用注解管理事务时 , 设置了 @Transactional 注解 , 并且配置也是 ok 的 ,
但是 事务就是不生效 , 我百度了各种可能的原因都没有解决 , 并且 , 当某一个类的 某个方法 设置了 Transactional 注解 , 这个类创建时是有代理创建的,我输出类这个类很明显也不是代理类 , 我百思不得其解
然后 我又重新建了一个工程, 把之前的 配置文件复制了 这次是 ok的 ?
竟然成功了 ? 说明我写的是没有问题的 ,但是为什么 ? 前面那个是有问题 , 能够正常创建容器对象, 但是不是代理对象,
第一个 配置文件不行 , 第二个是 ok 的 , 但是这两个 内容完全一样, 那么这两个 不一样的 只有名字了 , 然后我把 第一个 改了名字, 然后果然 … 是 ok的 ?
这个时候我才意识到 , sprint-tx 这个名字 好像是spring 事务管理的配置文件 , 因为 当我 把 第一个 sprint-tx 改成 sprint-tx01 ,然后 我读取的时候按照 spring-tx 依然可以读取到 这个在我 目录下面不存在的配置文件 , 但是我改成其他的不存在的名字不可以 , 由于是新学 所以起名字比较随便 , 这里记录下来
注意 不要起和spring自带的配置文件相同的配置文件名
===========================================================
更新 : 上面的想法都是错误的 !!!
终于明白 为什么 出现上面的情况 !
昨天我没有意识到 我用junit测试 读取的是 testResources 目录下的 spring-tx.xml 文件 , 我还在疑惑为什么明明 我 resources 文件夹中明明没有 这个文件 ,但是依然是可以读取的 ,现在终于明白 , 并且也找到类为什么事务没有作用的原因 :
这个文件中根本没有设置 spring的事务配置 , 所以事务注解所在的对象肯定不是由 代理创建的 ! !