Spring AOP 开发(从OOP到AOP)

版权声明:翀版 https://blog.csdn.net/biggerchong/article/details/84995869

2、Spring AOP开发


目录

2、Spring AOP开发

2.1 什么是AOP

2.2 为什么学习AOP

2.3 如何使用Spring AOP开发(AspectJ的XML方式)

2.3.1 AOP开发中的相关术语

2.3.2 通过配置AOP实现

2.3.3 Spring切入点表达式写法

2.3.4 Spring的通知类型

2.4 Spring AOP开发(AspectJ的注解方式)

2.4.1使用注解的AOP对象目标类进行增强

2.4.2 Spring注解的切入点的配置


2.1 什么是AOP

         在软件业,AOP(Aspect Oriented Programming)面向切面编程,AOP是OOP的延续和扩展,能解决OOP中遇到的一些问题,是软件开发中的一个热点,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的解耦合,提高开发效率。

Spring AOP的由来:AOP最早由AOP联盟的租界提出来的,制定了一套规范,Spring将AOP思想引入到框架中,必须遵守AOP联盟规范。Spring是使用AOP思想最好的框架,Spring的AOP有自己的实现方式(非常繁琐基本不用),AspectJ是一个非常好的AOP框架,Spring就引入AspectJ作为自身的AOP开发。


2.2 为什么学习AOP

         在实际开发中对业务功能增强,希望在不修改源代码的情况下完成,而AOP可以完全的胜任此情况。AOP还可以进行权限校验、日志记录、性能监控、事务控制。


2.3 如何使用Spring AOP开发(AspectJ的XML方式)

2.3.1 AOP开发中的相关术语

  1. Joinpoint:连接点(可以被拦截到的点)
  2. Pointcut:切入点(真正被拦截到的点)
  3. Advice:通知、增强(方法层面的增强)
  4. Introduction:引入(类层面的增强)
  5. Target:被增强的对象
  6. Weaving:织入(将通知Advice应用到目标Target过程)
  7. Aspect:切面(多个通知Advice和多个切入点Pointcut组合)
  8. Proxy:代理对象

 

2.3.2 通过配置AOP实现

 

2.3.3 Spring切入点表达式写法

Spring切入点表达式是基于execution的函数完成的

语法格式:[访问修饰符] 方法返回值 包名.类名.方法名(参数)

举例:

  1. Public void com.sc.aop.ProductDaoImpl.save(..)      //指定包下的指定类方法
  2. *  *.*.*.*DaoImpl.save(..)   //指定包层级下的类后缀为DaoImpl下的save方法
  3. * com.sc.aop.ProductDao+.save(..)  //指定包下的当前类及其子类下的save方法
  4. * com.sc.aop..*.*(..)                //指定包及子包下的所有类中的所有方法

 

2.3.4 Spring的通知类型

前置通知:在目标方法执行之前进行操作

            前置通知可以获得切入点(增强方法)信息

后置通知:在目标方法执行之后进行操作

           后置通知可以获得切入点(增强方法)的返回信息

环绕通知:在目标方法执行之前和之后进行操作

        

            也能够取出返回值

异常抛出通知:在程序出现异常的时候进行操作

             能取出异常消息

最终通知:无论代码是否异常总是会执行

 

引介通知(了解

引介增强,则是对类级别的增强,我们可以通过引介增强为目标类添加新的属性和方法,更为诱人的是,这些新属性或方法是可以根据我们业务逻辑需求动态变化的。

进一步了解请跳转:https://blog.csdn.net/qwe6112071/article/details/50962613


2.4 Spring AOP开发(AspectJ的注解方式)

2.4.1使用注解的AOP对象目标类进行增强

开启注解配置

在切面类中添加注解

编写测试类测试

 

2.4.2 Spring注解的切入点的配置

Spring中利用切入点的配置来统一管理切面,避免更改时大量修改切面,只需更改切入点的value属性即可。

         切入点

         切入点管理切面(采用:切入点所处的类.切入点方法


                                         谢谢阅读!            ----知飞翀

猜你喜欢

转载自blog.csdn.net/biggerchong/article/details/84995869