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(); }