
aop是目标 springaop是一个技术手段达到目的 ,Aspectj 也是一个技术手段
springaop两种方式都采用了, 两种编程风格
ioc是一个编程目标 di是一个手段实现


ioc容器是一个线程安全的map
aop的织入是初始化的时候完成的
springaop 默认用的是什么技术实现的? 看条件的
当有接口时使用jdk动态代理 没有的时候使用cglib代理
默认是使用jdk代理的 初始化的时候有一个判断 当三个条件有一个为true的时候就为使用cglib(继承)代理 (例如在@EnableAspectJAutiProxy(proxyTargetClass= true 默认是为false))

为什么jdk动态代理基于接口,cglib基于继承?
jdk动态代理基于接口 会生成一个class文件 底层帮你已经继承了Proxy 所以接口的形式是jdk代理 java是单继承的方式 不能多继承 所以jdk动态代理使用接口(多实现)
cglib动态代理基于继承 底层没有帮你继承


execution 和within的区别: execution的类型更加丰富,且能定义到具体的方法, 而within只能到类
args 与包无关 与参数有关
annotaion 作用只能在方法上 类上没用
this 代理对象
target 目标对象
proxy模式里面有两个重要术语
proxy Class 代理对象
target Class 目标对象
CGLIB和JDK区别 JDK是基于接口 CGLIB是基于继承,所以thils可以在cglib作用

mybatis是采用jdk的动态代理
spring日志底层是采用 jcl 规范(抽象的) 具体的实现默认是用log4j
本文深入探讨了Spring AOP和IOC的概念,指出AOP是一种技术目标,而IOC是实现这一目标的手段。Spring AOP通过两种方式实现,即JDK动态代理和CGLIB代理,根据目标类是否实现接口选择使用哪种代理。同时,文章解释了JDK动态代理基于接口,CGLIB基于继承的原因。此外,还提到了Spring日志默认采用JCL规范和Log4j实现。
419

被折叠的 条评论
为什么被折叠?



