几篇Spring入门的基础文章已经陆续介绍完了。测试学生从0到1开始使用Spring。测试学生开始使用Spring。分析今天给大家介绍一下Spring的另一个核心技术点,AOP。AOP的概念不好理解。希望大家仔细阅读文章,按照文中代码进行实践。到时候你一定会收获很多!AOP(AspectOrientProgramming),直译过来就是面向切面的编程。AOP是一种编程思想,是面向对象编程(OOP)的补充。面向对象编程将程序抽象为各个层次的对象,而面向方面编程将程序抽象为各个方面。摘自书上的一张图《Spring实战(第4版)》:从这张图可以很形象的看出,所谓的section相当于应用对象之间的交叉点,我们可以把它抽象成一个单独的模块。Spring对面向切面的编程提供了丰富的支持,这是通过动态代理实现的。通过将应用程序业务逻辑与系统级服务(如审计和事务管理)分离,允许内聚开发。应用程序对象只做它们应该做的事情——完整的业务逻辑——仅此而已。他们不负责(甚至不知道)其他系统级问题,例如日志记录或事务支持。AOP的作用是保证开发人员可以在不修改源代码的情况下,为系统中的业务组件添加一些通用的功能。AOP的基本操作流程如下图所示:AOP领域的特征术语:横切关注点:跨越应用程序多个模块的方法或函数。即与我们的业务逻辑无关,但我们需要注意的部分是横切关注点。如日志、安全、缓存、事务等。ASPECT:横切关注点模块化的特殊对象。也就是说,它是一个类。建议:AOP框架中的增强处理。Advice描述了aspect何时被执行以及如何进行增强处理。这是一个类中的方法。Target:要通知的对象。代理:通知应用于目标对象后创建的对象。连接点(JointPoint):表示应用程序执行过程中可以插入切面的点。这个点可以是方法调用,也可以是异常抛出。在SpringAOP中,连接点始终是方法调用。切入点(PointCut):可以插入一个连接点以进行增强处理。简介:简介允许我们向现有类添加新方法或属性。编织:对目标对象进行增强处理,创建增强对象。这个过程就是编织。Advice建议(Advice)是一个aspect的实现,可以完成一个简单的编织功能(编织功能在这里完成)。SpringAOP中有5种通知类型,分别如下:每种通知的执行顺序如下图所示:实例编码要求:在类中添加日志功能,如下图所示:实现方式一:将方法logMsg()添加到每个类。如果类的数量很少,这不是什么大问题,但是如果要处理数百个类,就会有很多工作要做。实现方式二:通过aop首先在mvn中添加配置示例如下:out.println("添加用户");}publicvoiddelete(){System.out.println("删除用户");}publicvoidupdate(){System.out.println("更新用户");}publicvoidsearch(){System.out.println("queryuser");}创建类并实现@Before通知importjava.lang.reflect.Method;importorg.springframework.aop.MethodBeforeAdvice;publicclassBeforeLogimplementsMethodBeforeAdvice{//method:目标对象的方法被执行//objects:被调用方法的参数//Object:目标对象publicvoidbefore(Methodmethod,Object[]objects,Objecto)throwsThrowable{System.out.println(o.getClass().getName()+""+method.getName()+"方法执行完毕");}}创建类并实现@After通知importjava.lang.reflect.Method;importorg.springframework.aop.AfterReturningAdvice;publicclassAfterLogimplementsAfterReturningAdvice{//returnValue返回值//method被调用method//args被调用方法的对象的参数//target调用的目标对象)+""+method.getName()+"方法,"+"返回值:"+returnValue);}}编辑xml文件
