Spring同一个类中的注解方法调用AOP失效问题总结

时间:2023-03-08 16:39:26
Spring同一个类中的注解方法调用AOP失效问题总结
public interface XxxService {
// a -> b
void a();
void b();
}
@Slf4j
public class XxxServiceImpl implements XxxService {
@Override
public void a() {
log.info("a()");
// 注意这样调用方法,b方法不是通过代理类去访问的
// 在Spring中,同一个类中一个方法去调用(不管有没有注解)另外一个有注解(比如@Async,@Transational)的方法,被调用的那个方法的注解是不会生效的
this.b();
}
@Override
public void b() {
log.info("b()");
}
}
@Test
public void test_proxy(){
XxxServiceImpl xxxService = new XxxServiceImpl();
XxxService proxy = (XxxService) new DynamicLogProxy(xxxService).getProxyInstance();
proxy.a();
//proxy.b();
}

Spring同一个类中的注解方法调用AOP失效问题总结

分析spring事务@Transactional注解在同一个类中的方法之间调用不生效的原因及解决方案

在同一个类中调用另一个方法没有触发 Spring AOP 的问题