java spring aop测试演示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java spring aop测试演示相关的知识,希望对你有一定的参考价值。

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * Descritpion:
 * aop测试:
 * 1.添加Component注解,注入spring容器中
 * 2.添加Aspect注解,声明是切面
 *
 * @author Jeason
 * @date 2018/9/14
 */

/**
 *Order:
 *切面优先级,数值越小优先级越高
 */
@Order(1)
@Component
@Aspect
public class AopTest {
    private Logger logger = LoggerFactory.getLogger(getClass());

    @Pointcut("execution(* com.ssm.service.TestService.add(..))")
    public void TestAspect() {
    }

    @Pointcut("execution(* com.ssm.service.TestService.aopTest(..))")
    public void test() {
    }

    @Before("TestAspect()")
    public void before() {
        logger.warn("这是before");
    }

    @After("TestAspect()")
    public void after() {
        logger.warn("这是after");
    }

    @AfterReturning("TestAspect()")
    public void afterRunning() {
        logger.warn("这是AfterReturning");
    }

    @AfterThrowing("TestAspect()")
    public void afterThrowing() {
        logger.warn("这是afterThrowing,出现了异常");
    }

    @Around("test()")
    public void testAround(ProceedingJoinPoint pjp) {
        try {
            pjp.proceed();
        } catch (Exception e) {
            logger.error("方法出现了异常");
        } catch (Throwable throwable) {
            logger.warn(throwable.getMessage());
        } finally {
            logger.warn("方法执行完成");
        }
    }

    @Around("TestAspect()")
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        long start = System.currentTimeMillis();
        /**
         *执行目标方法:
         *可以处理返回结果,处理后的结果返回给请求端。
         * 如下:
         * 本来执行的结果是 “成功”
         * 修改后返回的结果是 “经过AOP重写新增成功”
         */
        Object obj = pjp.proceed();
        long duration = System.currentTimeMillis() - start;
        System.out.println(String.format("time for booking flight is %d seconds", duration));
        return "经过AOP重写新增成功";
    }


}

以上是关于java spring aop测试演示的主要内容,如果未能解决你的问题,请参考以下文章

Java开发Spring之AOP详解(xml--注解->方法增强事务管理(声明事务的实现))

2018.12.24 Spring中的aop演示

04-spring中的aop演示

Java开发工程师(Web方向) - 04.Spring框架 - 第3章.AOP技术

❤️‍Spring从入门到大神--AOP从入门到精通

初步学习Spring Aop使用之注解方式