异常增强 目标里面的,这个名字的方法产生了异常 System.out.println(target+"里面的"+method.getName()+"产生了"+ex.getMessage());
Spring-AOP 目标类+额外功能=代理类
相当于 一把枪 +消音器 弹夹等等=一把装备完善的枪
前置增强
org.springframework.aop.BeforeAdvice 代表前置增强知道,因为spring只支持方法级的增强,所以MethodBeforeAdvice 是目回前可用前置增强,表示在目标方法执行前实施增强。
后置增强
org.springframework.aop.AfterAdvice 代表后增强,表示目标方法在执行后实施增强
环绕增强
org.springframework.aop.MethodInterceptor 代表环绕增强,表示目标方法执行前后实施增强
异常抛出增强
org.springframework.aop.ThrowsAdvice 代表抛出异常增强,表示目标方法抛出异常后实施增强
引介增答强
org.springframework.aop.IntroductionInterceptor 代表引介增强,表示在目标类中添加一些新的方法和属性
异常增强:1 抛出异常 2 查看异常的AOP 执行AOP代码 3. 代码停止(异常增强是停止)
普通异常: 1 抛出异常 2代码停止
当启用了环绕增强,原方法就不再执行,等待proceed()方法,启用这个方法,在观察返回值的问题,返回值的处理
交给AOP, 在AOP中return(环绕增强是掐断)
软接口切入点是点 ,之前接口切入点是面 在需求增强方法的上面放置
AOP是spring框架的重要组成部分。AOP是以另一个角度来考虑程序结构,通过分析程序结构的关注点来完善面向对象编程(OOP)。OOP将应用程序分解成各个层次的对象,而AOP将程序分解成多个切面。spring AOP 只实现了方法级别的连接点,在J2EE应用中,AOP拦截到方法级别的操作就已经足够。在spring中,未来使IoC方便地使用健壮、灵活的企业服务,需要利用spring AOP实现为IoC和企业服务之间建立联系。
我的理解就是:AOP相当于一种人类的服装来使我们更有魅力。我们不能一直穿一件衣服,容易产生审美疲劳。而aop就是使我们变得与他人不同,有自己的独特魅力。如有人穿正装的酷。和穿休闲装的帅等等。
2.为什么用aop
1就是为了方便,看一个国外很有名的大师说,编程的人都是“懒人”,因为他把自己做的事情都让程序做了。用了aop能让你少写很多代码,这点就够充分了吧
2就是为了更清晰的逻辑,可以让你的业务逻辑去关注自己本身的业务,而不去想一些其他的事情,这些其他的事情包括:安全,事物,日志等。
4.切面(Aspect)
切面是通知和切入点的结合。现在发现了吧,没连接点什么事情,连接点就是为了让你好理解切点,搞出来的,明白这个概念就行了。通知说明了干什么和什么时候干(什么时候通过方法名中的before,after,around等就能知道),而切入点说明了在哪干(指定到底是哪个方法),这就是一个完整的切面定义
个方法),这就是一个完整的切面定义。
5.引入(introduction)
允许我们向现有的类添加新方法属性。这不就是把切面(也就是新方法属性:通知定义的)用到目标类中吗
6.目标(target)
引入中所提到的目标类,也就是要被通知的对象,也就是真正的业务逻辑,他可以在毫不知情的情况下,被咱们织入切面。而自己专注于业务本身的逻辑。
7.代理(proxy)
怎么实现整套aop机制的,都是通过代理,这个一会给细说。
8.织入(weaving)
把切面应用到目标对象来创建新的代理对象的过程。有3种方式,spring采用的是运行时,为什么是运行时,后面解释。
关键就是:切点定义了哪些连接点会得到通知
spring用代理类包裹切面,把他们织入到Spring管理的bean中。也就是说代理类伪装成目标类,它会截取对目标类中方法的调用,让调用者对目标类的调用都先变成调用伪装类,伪装类中就先执行了切面,再把调用转发给真正的目标bean
Spring-AOP 目标类+额外功能=代理类
最新推荐文章于 2022-05-19 00:01:38 发布