Aop主要的编程思想就是把这些横切性的问题和业务逻辑进分离,从而起到解耦作用。
Aop的底层实现:
1、 java 动态代理
2、cglib 代理
spring并没有对aop代理进行默认设置。
如果该类实现了接口的话,Aop的底层实现就是java动态代理。
如果没有实现接口的话,Aop的底层实现就是cglib代理。
Aop源码解析图:
java动态代理对象为什么要实现接口?
- 因为java是单继承多实现。
- 因为自动生成的代理对象默认就继承了Proxy类。
Aop主要的编程思想就是把这些横切性的问题和业务逻辑进分离,从而起到解耦作用。
1、 java 动态代理
2、cglib 代理
spring并没有对aop代理进行默认设置。
如果该类实现了接口的话,Aop的底层实现就是java动态代理。
如果没有实现接口的话,Aop的底层实现就是cglib代理。
Aop源码解析图: