栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

简单的aop环绕通知的案例(自定义注解形式)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简单的aop环绕通知的案例(自定义注解形式)

自定义注解

@Target(ElementType.METHOD) //  表示注解的使用范围
@Retention(RetentionPolicy.RUNTIME) //  注解的声明周期
@documented
public @interface CheYuHang {

    //  定义前缀
    String prefix() default "cache";
}

切面类


@Component
@Aspect
public class LogAspect {

    @Around("@annotation(com.baizhi.springboot_jsp_shiro.test.aop.CheYuHang)")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {

        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
        System.out.println("获取方法的名字"+method.getName());

        CheYuHang annotation = method.getAnnotation(CheYuHang.class);
        System.out.println("获取方法注解前缀"+annotation.prefix());

        System.out.println("获取方法的返回值类型"+method.getReturnType());

        Class[] parameterTypes = method.getParameterTypes();
        for (Class parameterType : parameterTypes) {
            System.out.println("获取方法的参数类型"+parameterType);
        }

        Object[] args = joinPoint.getArgs();
        for (Object arg : args) {
            System.out.println("方法的参数值为"+arg);
        }
        return joinPoint.proceed(args);
    }
}

服务类

@Component
public class TestAop {

    @CheYuHang(prefix = "cache")
    public Integer test(int a,int b){
        System.out.println("testAop.....................");
        return a+b;
    }
}

控制层(controller)

 @GetMapping("/test")
    public void  test(){
        System.out.println("test.........");
        Integer test = testAop.test(1, 1);
        System.out.println("执行结果为"+test);
    }

执行结果

test.........
获取方法的名字test
获取方法注解前缀cache
获取方法的返回值类型class java.lang.Integer
获取方法的参数类型int
获取方法的参数类型int
方法的参数值为1
方法的参数值为1
testAop.....................
执行结果为2
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459026.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号