Spring项目中同一个类下内部方法调用导致失误失效问题

[问题]Spring的声明式事务,我想就不用多介绍了吧,一句话“自从用了Spring AOP啊,事务管理真轻松啊,真轻松;事务管理代码没有了,脑不酸了,手不痛了,一口气全配上了事务;轻量级,测试起来也简单,嘿!”。不管从哪个角度看,轻量级声明式事务都是一件解放生产力的大好事。所以,我们“一直用它”。不过,最近的一个项目里,却碰到了一个事务管理上的问题:有一个服务类,其一个声明了事务的方法,里面做了

- 阅读全文 -

透过现象看原理:详解Spring中Bean的this调用导致AOP失效的原因

前言在我们使用Spring时,可能有前辈教导过我们,在bean中不要使用this来调用被@Async、@Transactional、@Cacheable等注解标注的方法,this下注解是不生效的。那么大家可曾想过以下问题为何致this调用的方法,注解会不生效这些注解生效的原理又是什么如果确实需要调用本类方法,且还需要注解生效,该怎么做?代理是否可以做到this调用注解就直接生效?通过本文,上面的疑

- 阅读全文 -

spring 依赖注入时,什么时候会创建代理类

问题来源 以前一直有个疑惑,为什么我创建的controller中注入的service类有时候是代理类,有时候是普通javabean,当时能力不够,现在已经有了点经验就大胆跟了跟源码,看看到底咋回事。  首先看看问题现象:    a1:service是代理类,并且是CGLIB类型代理  ​ a2:service是代理类,并且是jdk 动态代理  b:serivce不是代理类,而是普通类 问题分

- 阅读全文 -