cglib動(dòng)態(tài)代理,為什么a()調(diào)用當(dāng)前類的b(),這個(gè)b()是父類的b(),而不是cglib生成的子類的b()呢?
@Component
public class MyTest {
public void a() {
System.out.println("it's a");
b();
}
public void b() {
System.out.println("it's b");
}
}
@Aspect
@Component
@Slf4j
@Getter
public class AspectLog {
@Pointcut("execution(public * com.vae1970.demo.aspect.MyTest.*(..))")
public void pointcut() {
}
@Before("pointcut()")
public void before(JoinPoint jp) {
Method method = (MethodSignature) jp.getSignature().getMethod();
System.out.println("log: function " + method.getName());
}
}
@RestController
public class TestController {
@Autowired
private MyTest myTest;
@GetMapping("/aspect")
public String aspect() {
myTest.a();
return "ok";
}
}
期望輸出
log: function a
it's a
log: function b
it's b
實(shí)際輸出
log: function a
it's a
it's b
我查看了cglib生成的MyTest類,a()和b()都做了代理,那為什么實(shí)際執(zhí)行的時(shí)候,沒有執(zhí)行代理類的b()呢?
java cglib動(dòng)態(tài)代理
慕尼黑5688855
2019-01-17 01:21:46