2、连接点(JoinPoint):这个更好解释了,就是spring允许你使用通知的地方,那可真就多了,基本每个方法的前,后(两者都有也行),或抛出异常时都可以是连接点,spring只支持方法连接点.其他如aspectJ还可以让你在构造器或属性注入时都行,不过那不是咱关注的,只要记住 , 和方法有关的前前后后(抛出异常),都是连接点 。
3、切入点(Pointcut):上面说的连接点的基础上,来定义切入点,你的一个类里,有15个方法,那就有几十个连接点了对把,但是你并不想在所有方法附近都使用通知(使用叫织入,以后再说),你只想让其中的几个,在调用这几个方法之前,之后或者抛出异常时干点什么,那么就用切点来定义这几个方法,让切点来筛选连接点,选中那几个你想要的方法 。
4、切面(Aspect):切面是通知和切入点的结合 。现在发现了吧,没连接点什么事情 , 连接点就是为了让你好理解切点,搞出来的,明白这个概念就行了 。通知说明了干什么和什么时候干(什么时候通过方法名中的before,after,around等就能知道),而切入点说明了在哪干(指定到底是哪个方法),这就是一个完整的切面定义 。
5、引入(introduction):允许我们向现有的类添加新方法属性 。这不就是把切面(也就是新方法属性:通知定义的)用到目标类中吗
6、目标(target):引入中所提到的目标类,也就是要被通知的对象 , 也就是真正的业务逻辑,他可以在毫不知情的情况下,被咱们织入切面 。而自己专注于业务本身的逻辑 。
7、代理(proxy):怎么实现整套aop机制的,都是通过代理,这个一会给细说 。
8、织入(weaving):把切面应用到目标对象来创建新的代理对象的过程 。有3种方式,spring采用的是运行时,为什么是运行时,后面解释 。
java中的静态方法能否进行切面编程?静态方法没有实例aop九宫格java代码,不能进行切面 。
北大青鸟java培训:动态SpringAOP的是如何实现的?SpringAOP是利用代理模式 , 在运行时生成一个目标对象的代理 , 并且使用代理代替目标对象,整个过程对使用者透明 , 使用者无法像使用目标对象一样使用代理对象,代理对象类型是目标对象所属类的子类或者接口实现 , 北京IT培训认为这个子类也是在运行时动态生成,这个生成子类的过程使用操作字节码技术,Spring框架中使用两种字节码技术:JDK动态代理和CGLIB,当目标类实现了接口时使用JDK动态代理,否则使用CGLIB代理 。
AOP的实现包含下面几个步骤:根据配置或注解解析切面 。
生成AOP代理对象,给目标对象生成一个代理类以及代理类实例,根据解析出的切面 , 生成通知链设置到代理对象,在代理的回调中会执行通知链 。
把AOP代理对象注册到容器中代替目标对象,当使用者向容器请求目标bean时 , 容器会返回代理对象 。
下面对这几个步骤逐一的分析 。
切面解析在分析切面解析过程之前 , 首先先了解一下几个关键的接口,看下面的类图 。
PointCut:描述切点,在进行切点匹配时,使用ClassFilter进行类匹配,MethodMatcher进行执行方法匹配 。
Advice:通知,AfterAdvice后通知,BeforeAdvice前通知,DynamicIntroductionAdvice引用通知,环绕通知通过Interceptor实现 。
Advisor:通知器,也就是切面,PointcutAdvisor切点通知器,IntroductionAdvisor引用通知器 。
在创建AOP代理之前需要把相关的切面配置解析成上面类图中的接口子类的对象,对于ProxyFactoryBean来说,没有这个过程,因为这种方式下不能使用切点 。
推荐阅读
- excel函数怎么写,excel函数实用技巧
- asp.net做h5的简单介绍
- gis地图系统开发,gis开发教程
- 乐橙直播录屏怎么录屏教程,乐橙录像回放怎么操作
- mysql出错了怎么修改 mysql输错命令如何修改
- 电脑屏幕分享怎么放大,电脑 屏幕分享
- js对象的key为变量,js对象的属性值可以是变量
- java网上爬虫交易平台,java爬虫教程
- go语言垃圾回收视频 go 垃圾语言