AOP切面编程简单使用

一、原理简介

        Spring框架的目的是使逻辑更加简单清晰,配置更加灵活,Spring实现这个目的的手段主要是利用AOP和IOC,本文通过实现工程方法的调用次数来简单使用AOP进行编程.

       AOP是利用反射机制实现或者可以说是动态代理,不过其实动态代理也是利用反射机制实现的。正常代码中会有很多相同的逻辑,比如下单流程,需要首先验证用户是否登录,查看订单流程,也需要验证用户是否登录,那我们就可以把【验证用户是否登录】这个流程抽象出来,在一个地方把代码写好后,利用AOP告诉Spring在什么地方把【验证用户是否登录】的流程加进去,即可以完成,不需要重新写验证的代码。当然,这只是一个理解AOP原理的例子,可能并不合适,因为AOP不会把代码加到源文件里,但是它可以影响最终的机器代码,进而影响代码的执行。

以下给出专业定义:

1、Aspect(切面):是类上的声明,在Aspect声明的类中包含Pointcut和Advice。

2、Pointcut(切点):表达式,告诉程序需要在哪些地方执行对应的操作。

3、Advice(通知或增强):定义在PointCut里面指定的程序点需要做的具体操作。通过Before、After和Around来制定,是在每个joint point之前、之后前后都要执行

二、实例介绍

1、利用@Aspect定义一个切面类

2、在类里利用@PointCut定义哪些地方需要执行切面程序

3、利用@Before或@After或@Arround指定切面程序具体操作的顺序

@Component
@Aspect
public class LogInterceptor {

    @Pointcut("execution(* com.netease.klqa.example.controller..*.*(..))")
    public void pointCut(){
    }

    @Before("pointCut()")
    public void doBefore(JoinPoint joinPoint){
       
        //可以利用以下方式获取当前包、类及参数个数等

        String tragetClassName = joinPoint.getSignature().getDeclaringTypeName();
        String methodName = joinPoint.getSignature().getName();
     
        Object[] args = joinPoint.getArgs();
        int length = args.length;
       
        //写具体要进行的操作

        }

你可能感兴趣的:(接口自动化测试)