Spring之AOP操作,巧夺天功的切面技术

Posted 360linker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring之AOP操作,巧夺天功的切面技术相关的知识,希望对你有一定的参考价值。

这篇我们学习的是spring中重要的AOP面向切面的思想。之后,我们便可以在不修改源代码的前提下实现方法的增强。

AOP技术简介

举个简单的例子,我们这里有一些功能模块,我们想要在这些功能上添加一个具体的完成时间,那么我们就要去修改所有功能模块的代码,并加入时间,这样的方式着实让人烦恼。

 

Spring框架中的AOP面向切面的技术帮助我们解决了这样的问题,其利用"横切"技术,能过深入到封装对象的内部,并且能够将我们关注的功能代码和业务逻辑代码分离出来,方便我们的操作。我们对切面进行的操作就是对方法的增强。

面向切面技术的实现,其实就是通过java的动态代理来实现的,我们之前有所已经学习。

一起来学大数据|Java中的动态代理,重中之重的进阶基石

AOP重要的操作术语

切入点(Pointcut):我们将类中实际被增强的方法叫做切入点

切面(Aspect):我们把方法的增强拓展应用到具体方法上的这个过程叫做切面

通知/增强(Advice):我们将对方法增强的逻辑,称为增强或者通知

  • 前置通知:方法执行前运行

  • 后置通知:方法之后后运行

  • 异常通知:方法出现异常后执行

  • 最终通知:不管方法是否能正常运行,都会在最后执行

  • 环绕通知:运行在方法前和方法后

Spring之AOP操作,巧夺天功的切面技术

 

Spring的AOP操作

在实际工作中,我们常常使用的注解方式实现aop操作,而很少使用xml配置文件的方式。接下来,我们就以十分简单的注解为例来进行说明。

第一步:导入jar包

同样的,我们将除了基本jar包以外的与aop相关的jar加入lib中。

Spring之AOP操作,巧夺天功的切面技术

 

第二步:创键配置文件

我们首先在src下面创建一个applicationContext.xml的配置文件。

1.加入约束

每个模块有每个模块的约束,等我们将讲完这些,后面我们学习综合案例的时候,就会将所有的约束都加在一起。

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

这些都是固定格式,没必要去记。

2.开启aop操作

Spring之AOP操作,巧夺天功的切面技术

 

最后的效果图如下:

Spring之AOP操作,巧夺天功的切面技术

 

第三步:创建对象

具体的架构是这个样子的,user是我的普通方法,我们在MyUser中实现我对方法的增强,最后我们在使用TestAop对我们的方法进行测试。

Spring之AOP操作,巧夺天功的切面技术

 

User类中的方法如下:

Spring之AOP操作,巧夺天功的切面技术

 

我们通过注解名称来实现对方法的增强,我们再创建一个MyUser类,用来增强user类方法。

1.给User类的show()方法做一个前置增强

Spring之AOP操作,巧夺天功的切面技术

 

2.给User类的delete()方法做了一个后置增强

Spring之AOP操作,巧夺天功的切面技术

 

3.给User类的add()方法做一个环绕增强

Spring之AOP操作,巧夺天功的切面技术

 

4.更新方法的异常通知

Spring之AOP操作,巧夺天功的切面技术

 

5.最终增强

 

测试其中一个方法,环绕增强,我们可以发现达到我们的目的。

 


这就是我们今天学习的切面,5个增强方法,我们在添加@注解名称后可以实现对原有的方法增强,实现功能的拓展。


以上是关于Spring之AOP操作,巧夺天功的切面技术的主要内容,如果未能解决你的问题,请参考以下文章

巧夺天工的kfifo

巧夺天工的kfifo(修订版)

巧夺天工的kfifo(修订版)

Web基础之Spring AOP与事务

STM32 & FreeRTOS & KFIFO (巧夺天工)

传世的关系模型,巧夺天工的分布式数据库设计