iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >怎么搭建一个AOP测试环境
  • 847
分享到

怎么搭建一个AOP测试环境

2024-04-02 19:04:59 847人浏览 八月长安
摘要

本篇内容介绍了“怎么搭建一个aop测试环境”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!写在前面金九银十的

本篇内容介绍了“怎么搭建一个aop测试环境”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

写在前面

金九银十的跳槽黄金期已拉开序幕,相信很多小伙伴也在摩拳擦掌,想换一个新的工作环境。然而,由于今年疫情的影响,很多企业对于招聘的要求是越来越严格。之前,很多不被问及的知识点,最近面试时都会被问到了。这不,有些面试官竟然让面试者现场搭建一个AOP测试环境。那怎么办呢?那就给他搭建一个呗!

什么是AOP?

AOP (Aspect Orient Programming),直译过来就是 面向切面编程。AOP  是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各个层次的对象,而面向切面编程是将程序抽象成各个切面。

比如,在《spring实战(第4版)》中有如下一张图描述了AOP的大体模型。

怎么搭建一个AOP测试环境

从这张图中,我们可以看出:所谓切面,相当于应用对象间的横切点,我们可以将其单独抽象为单独的模块。

总之一句话:AOP是指在程序的运行期间动态的将某段代码切入到指定方法、指定位置进行运行的编程方式。AOP的底层是使用动态代理实现的。

搭建环境

1.导入AOP依赖

要想搭建AOP环境,首先,我们就需要在项目的pom.xml文件中引入AOP的依赖,如下所示。

<properties>     <spring.version>5.2.6.RELEASE</spring.version> </properties> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-aspects</artifactId>     <version>${spring.version}</version> </dependency>

2.定义目标类

在io.mykit.spring.plugins.reGISter.aop包下创建一个MathHandler类,用于处理数学计算上的一些逻辑。比如,我们在MathHandler类中定义了一个加法操作,返回两个整数类型值的和,如下所示。

package io.mykit.spring.plugins.register.aop;  public class MathHandler {      public int add(int i, int j){         System.out.println("目标方法执行");         return i + j;     } }

3.定义切面类

在io.mykit.spring.plugins.register.aspect包下创建一个LogAspect切面类,在LogAspect类中定义了几个打印日志的方法,以这些方法来感知MathHandler类中的add()方法的运行情况。如果需要切面类来感知目标类方法的运行情况,则需要使用Spring  AOP中的通知方法。

AOP中的通知方法及其注解与含义如下:

  • 前置通知(@Before):在目标方法运行之前运行。

  • 后置通知(@After):在目标方法运行结束之后运行,不管是正常结束还是异常结束都会执行。

  • 返回通知(@AfterReturning):在目标方法正常返回之后运行。

  • 异常通知(@AfterThrowing):在目标方法抛出异常后运行。

  • 环绕通知(@Around):动态代理,手动推进目标方法运行。

综上,LogAspect类中的具体方法定义如下所示。

package io.mykit.spring.plugins.register.aspect; import org.aspectj.lang.annotation.*;  @Aspect public class LogAspect {      @Pointcut("execution(public int io.mykit.spring.plugins.register.aop.MathHandler.*(..))")     public void pointCut(){      }      @Before("pointCut()")     public void logStart(){         System.out.println("加法运行开始,参数列表是:{}");     }      @After("pointCut()")     public void logEnd(){         System.out.println("加法运行结束");     }      @AfterReturning("pointCut()")     public void logReturn(){         System.out.println("加法正常返回,运行结果:{}");     }      @AfterThrowing("pointCut()")     public void logException(){         System.out.println("加法异常,异常信息:{}");     } }
  • logStart()方法:MathHandler类的add()方法运行之前运行。

  • logEnd()方法:MathHandler类的add()方法运行结束之后运行。

  • logReturn()方法:MathHandler类的add()方法正常返回之后运行。

  • logException()方法:MathHandler类的add()方法抛出异常后执行。

4.将目标类和切面类加入到IOC容器

在io.mykit.spring.plugins.register.config包中,新建AopConfig类,并使用@Configuration注解标注这是一个Spring的配置类,同时使用@EnableAspectJAutoProxy注解开启基于注解的AOP模式。在AopConfig类中,使用@Bean注解将MathHandler类和LogAspect类加入到ioc容器中,如下所示。

package io.mykit.spring.plugins.register.config; import io.mykit.spring.plugins.register.aop.MathHandler; import io.mykit.spring.plugins.register.aspect.LogAspect; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy;  @Configuration @EnableAspectJAutoProxy public class AopConfig {          @Bean     public MathHandler mathHandler(){         return new MathHandler();     }      @Bean     public LogAspect logAspect(){         return new LogAspect();     } }

5.创建测试类

在 io.mykit.spring.test包中创建AopTest测试类,并在AopTest类中创建testAop01()方法,如下所示。

package io.mykit.spring.test; import io.mykit.spring.plugins.register.aop.MathHandler; import io.mykit.spring.plugins.register.config.AopConfig; import org.junit.Test; import org.springframework.context.annotation.AnnotationConfigApplicationContext;  public class AopTest {      @Test     public void testAop01(){         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AopConfig.class);         MathHandler mathHandler = context.getBean(MathHandler.class);         mathHandler.add(1, 2);         context.close();     } }

运行AopTest类中的testAop01()方法,输出的结果信息如下所示。

加法运行开始,参数列表是:{} 目标方法执行 加法运行结束 加法正常返回,运行结果:{}

可以看到,执行了切面类中的方法,并打印出了相关信息。但是没有打印参数列表和运行结果。

6.在切面类中打印参数列表和返回结果

那如果需要打印出参数列表和运行结果,该怎么办呢?别急,我们继续往下看。

要想打印出参数列表和运行结果,就需要对LogAspect类中的方法进行优化,优化后的结果如下所示。

package io.mykit.spring.plugins.register.aspect;  import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.*; import java.util.Arrays;  @Aspect public class LogAspect {      @Pointcut("execution(public int io.mykit.spring.plugins.register.aop.MathHandler.*(..))")     public void pointCut(){      }      @Before("pointCut()")     public void logStart(JoinPoint joinPoint){         System.out.println(joinPoint.getSignature().getName() + " 运行开始,参数列表是:{"+ Arrays.asList(joinPoint.getArgs()) +"}");     }      @After("pointCut()")     public void logEnd(JoinPoint joinPoint){         System.out.println(joinPoint.getSignature().getName() + " 运行结束");     }      @AfterReturning(value = "pointCut()", returning = "result")     public void logReturn(JoinPoint joinPoint, Object result){         System.out.println(joinPoint.getSignature().getName() + " 正常返回,运行结果:{"+result+"}");     }      @AfterThrowing(value = "pointCut()", throwing = "exception")     public void logException(JoinPoint joinPoint, Exception exception){         System.out.println(joinPoint.getSignature().getName() + " 异常,异常信息:{"+exception+"}");     } }

这里,需要注意的是:JoinPoint参数一定要放在参数的第一位。

此时,我们再次运行AopTest类中的testAop01()方法,输出的结果信息如下所示。

add 运行开始,参数列表是:{[1, 2]} 目标方法执行 add 运行结束 add 正常返回,运行结果:{3}

7.目标方法抛出异常

我们在MathHandler类的add()方法中抛出一个异常,来测试下异常情况,如下所示。

package io.mykit.spring.plugins.register.aop;   public class MathHandler {      public int add(int i, int j){         System.out.println("目标方法执行");         throw new RuntimeException();        //return i + j;     } }

此时,我们再次运行AopTest类中的testAop01()方法,输出的结果信息如下所示。

add 运行开始,参数列表是:{[1, 2]} 目标方法执行 add 运行结束 add 异常,异常信息:{java.lang.RuntimeException}

可以看到,正确的输出了切面中打印的信息。

“怎么搭建一个AOP测试环境”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 怎么搭建一个AOP测试环境

本文链接: https://www.lsjlt.com/news/84681.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么搭建一个AOP测试环境
    本篇内容介绍了“怎么搭建一个AOP测试环境”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!写在前面金九银十的...
    99+
    2022-10-19
  • 怎么搭建linux测试环境
    要搭建一个Linux测试环境,你可以按照以下步骤进行操作:1.选择Linux发行版:首先要选择一个适合测试的Linux发行版,比如U...
    99+
    2023-08-24
    linux
  • linux如何搭建web测试环境
    搭建Linux上的Web测试环境可以按照以下步骤进行:1. 安装Apache Web服务器:在终端中运行以下命令安装Apache:`...
    99+
    2023-08-23
    linux
  • Android Robotium搭建环境测试微信
      因为要在命令行下运行一些android的工具,所以配置一些环境变量会比较方便:   遇到问题: java -jar re-sign.jar 出现提示android路径...
    99+
    2022-06-06
    环境 robotium 测试 Android
  • 自动化测试 selenium 环境搭建
    做 web 项目,测试是无法避免的。对于某些特定功能,采用单元测试就行。但如果想对网站进行整体测试,人工点击测试可行但有点累,如果能借助自动化测试工具就更好了。selenium 就是一款能满足这样要求的测试工具,selenium 是一款用...
    99+
    2023-01-30
    环境 测试 selenium
  • Android网络测试环境搭建方法杂谈(一)
      手机软件测试中,网络测试是很常见的,所以查看和修改请求与返回数据是基础。本文介绍如何查看网络请求,以及如何搭建环境,后续再介绍修改请求数据以及更多应用。   下面介绍...
    99+
    2022-06-06
    环境搭建 环境 杂谈 方法 测试环境 测试 Android
  • 怎么在MacBook中搭建一个python3.7环境
    怎么在MacBook中搭建一个python3.7环境?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。第一、下载Python最新版本安装包pyth...
    99+
    2022-10-18
  • 怎么快速搭建一个spring security环境
    这期内容当中小编将会给大家带来有关怎么快速搭建一个spring security环境,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。web.xml配置<!-- 加载Spring的配置文件 -->...
    99+
    2023-05-31
    spring security securit
  • 如何搭建MySQL Group Replication测试环境
    这篇文章给大家分享的是有关如何搭建MySQL Group Replication测试环境的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。    最近看了下My...
    99+
    2022-10-19
  • Python 做自动化测试环境搭建
    https://blog.csdn.net/GitChat/article/details/79081187   一、Selenium 环境部署 1. window 环境部署 1.1 当前环境 Win10 64 位系统;Python3.6...
    99+
    2023-01-31
    环境 测试 Python
  • 怎么在Docker环境下搭建测试管理平台
    这篇文章主要为大家展示了“怎么在Docker环境下搭建测试管理平台”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么在Docker环境下搭建测试管理平台”这篇文章吧。第一部分:环境准备首先需要在...
    99+
    2023-06-05
  • mysql源码调试(一)环境搭建
    操作系统:windows server 2012 R2VS版本:visio studio 2015 community机器配置:4core/4G安装所需包:cmake,bison,boost,activep...
    99+
    2022-10-18
  • 怎么搭建一个Java web开发环境篇
    这期内容当中小编将会给大家带来有关怎么搭建一个Java web开发环境篇,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Tomcat + Eclipse添加Java EE插件因为之前进行Java SE学习已...
    99+
    2023-05-31
    java web ava
  • Linux中怎么搭建一个Android开发环境
    Linux中怎么搭建一个Android开发环境,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。系统环境[android@localhost ~]$ uname -aLinux l...
    99+
    2023-06-13
  • hibernate环境搭建测试的示例分析
    这篇文章主要介绍了hibernate环境搭建测试的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。真正要掌握,还得需要自己动手,才能丰...
    99+
    2022-10-19
  • MySQL InnoDB Cluster环境搭建和简单测试
    InnoDB Cluster初印象   记得MySQL Group Replicatioin 刚开始的时候,MySQL界很是轰动,等待了多年,终于有了官方的这个高可用解决方案。你要说还...
    99+
    2022-10-18
  • linux php调试环境怎么搭建
    本文操作环境:ubuntu 16.04系统,PHP7.1版,Dell G3电脑。linux php调试环境怎么搭建?Linux的PHP开发环境快速搭建搭建的环境是LNMP:1、安装MySQL这个非常简单我用的是Ubuntu那么就用apt源,...
    99+
    2015-01-12
    linux
  • 怎么在vscode中搭建一个golang开发环境
    怎么在vscode中搭建一个golang开发环境?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。vscode有什么用Visual Studio Code 是一个运行于 OS X,...
    99+
    2023-06-07
  • 怎么在vmware中搭建一个Hadoop集群环境
    怎么在vmware中搭建一个Hadoop集群环境?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。先在虚拟机中关闭系统右键虚拟机,点击管理,选择克隆点击下一步,选择...
    99+
    2023-06-14
  • 怎么利用php搭建一个云编译环境
    在传统的软件开发过程中,我们经常会遇到需要通过编译生成可执行文件的情况,而搭建一个云编译环境可以将这个过程更加自动化和高效化。本文将详细介绍如何使用php来搭建一个云编译环境。首先,我们需要准备一个可用的Web服务器,如果您还没有可以选择N...
    99+
    2023-05-14
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作