AOP(Action oriented programming)

1、AOP(Action oriented programming):面向切面编程。

2、AOP的作用:它可以让我们“专心做事”,专心处理业务逻辑代码。不用关心:日志记录、事务控制及权限控制等。

3、使用 spring的 aop可以解决两个问题:
    3.1.Java EE程序员在编写具体的业务逻辑处理方法时,只需关心核心的业务逻辑处理,既提高了工作效率,又使代码变更简洁优雅。
    3.2.在日后的维护中由于业务逻辑代码与其它共有代码分开存放,而且共有代码是集中存放,从而使维护工作变得简单轻松。

4、AOP中关键性概念:
    4.1切面-【Aspect】:切面就是共有功能的实现。如日志切面、权限切面、事务切面等。在实际应用中通常是一个存放共有功能实现的普通 Java类,之所以能被AOP容器识别成切面,是在配置中指定的。
    4.2通知-【Advice】:通知又名拦截器,它的意思是在某个特定的连接点上执行的动作,它是切面的具体实现。以目标方法为参照点,根据放置的地方不同,通知分为如下几种:
        前置通知-Before,实现MethodBeforeAdvice接口。     ===》目标方法调用之前执行;
        后置通知-After,实现AfterReturningAdvice接口。        ===》目标方法调用之后执行;
        返回通知-After-returning。                ===》目标方法执行成功之后执行;
        异常通知-After-throwing。                ===》目标方法抛出异常后执行;
        环绕通知-Around,实现MethodInterceptor接口。    ===》目标方法执行前后都会执行,相等于合并了前置和后置通知。
        ***重点:前置通知、后置通知和环绕通知;
    4.3连接点-【Joinpoint】:程序在运行过程中能够插入切面的地点。例如,方法调用、异常抛出或返回值等,Spring只支持方法级的连接点。
    4.4切入点-【Pointcut】:多个连接点的集合,用于定义通知应该切入到哪些连接点上。不同的通知通常需要切入到不同的连接点上,这种精准的匹配是由切入点的正则表达式来定义的。
    4.5目标对象-【Target】:即将切入切面的对象,也就是那些被通知的对象。这些对象中已经只剩下干干净净的核心业务逻辑代码了(其实就是只有业务逻辑代码的java类),所有的共有功能代码等待AOP容器的切入。
    4.6代理对象-【Proxy】:将通知应用到目标对象之后被动态创建的对象。代理=目标+通知,注意:只有代理对象才有AOP功能,而AOP的代码是写在通知的方法里面的。
    4.7织入-【Weaving】:将切面应用到目标对象从而创建一个新的代理对象的过程。这个过程可以发生在编译期、类装载期及运行期,当然不同的发生点有着不同的前提条件。譬如发生在编译期的话,就要求有一个支持这种AOP实现的特殊编译器;发生在类装载期,就要求有一个支持AOP实现的特殊类装载器;只有发生在运行期,则可直接通过Java语言的反射机制与动态代理机制来动态实现。
    4.8适配器-【Advisor】:适配器=通知(Advice)+切入点(Pointcut)。
        Java中的适配器就是可以把一种接口转换成另一种接口的对象,Spring AOP 模块对 BeforeAdvice、 AfterAdvice、 ThrowsAdvice 三种通知类型的支持实际上是借助适配器模式来实现的。
5、工具类-ProxyFactoryBean介绍:
    在实现AOP功能的时候需要借助工具类-org.springframework.aop.framework.ProxyFactoryBean,它的主要作用是用来创建代理对象。有以下三个属性:
        target:代理对象要代理的目标类,这个目标类实现了 proxyInterfaces属性指定的接口。在接下来要演示的案例中,实现类 BookBizImpl就是要代理的目标类;
        proxyInterfaces:代理对象要实现的接口列表,是一个List集合。在接下来要演示的案例中,代理对象要实现的接口就是 IBookBiz。其实代理对象要实现的接口和被代理对象(也就是目标类)要实现接口是一样的,因为代理对象要代理目标类,所以要实现目标类所实现的接口。
        interceptorNames:通知,又名拦截器。interceptorNames是存放拦截器的容器。指明要在代理的目标类中添加的通知(前置通知、后置通知等),是一个List集合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值