美文网首页
Aspect 加载 自定义注解

Aspect 加载 自定义注解

作者: 探戏者 | 来源:发表于2017-11-14 17:30 被阅读0次

自定义注解类

@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MethodCallConstraint {
    //处理器校验必须有值
    String redisKey() default "";
    int countLimit() default 60;
    long time() default 1000;
}

定义Aspect处理类

  • 首先,确定项目spring配置文件中已经存在
<aop:aspectj-autoproxy proxy-target-class="true"/>
  • 其次,处理自定义注解
@Component
@Aspect
public class MethodCallConstraintHandler {
    private static final Logger LOGGER = LoggerFactory.getLogger(MethodCallConstraintHandler.class);

    /**
     * 定义一个公共的切点
     */
    @Pointcut("@annotation(com.api.web.annotations.MethodCallConstraint)")
    public void MethodCallConstraintPointcut(){
    }

    @Before("MethodCallConstraintPointcut()")
    public void beforeMethod(JoinPoint point){
        Object[] args = point.getArgs();
        LOGGER.info("args :"+ Arrays.toString(args));
        MethodSignature signature = (MethodSignature) point.getSignature();
        LOGGER.info("目标方法为:"+signature.getDeclaringTypeName()+"."+signature.getName());
        Method method = signature.getMethod();
        MethodCallConstraint annotation = method.getAnnotation(MethodCallConstraint.class);
        LOGGER.info("目标注解:"+annotation.redisKey()+","+annotation.countLimit()+","+annotation.time());
    }
// 逻辑代码 ...
}
  • 最后,使用示例
 @MethodCallConstraint(redisKey = "redisValue",countLimit=88,time=666)
    public String product(HttpServletRequest request) throws IOException {
//处理逻辑
}
  • 运行结果日志如下
2017-11-14 17:19:33,282 INFO  c.l.j.c.r.w.a.MethodCallConstraintHandler - [args :[org.apache.catalina.connector.RequestFacade@43fbcc32]]
2017-11-14 17:19:34,901 INFO  c.l.j.c.r.w.a.MethodCallConstraintHandler - [目标方法为:com.le.jr.cash.restapi.web.controller.CashUserController.product]
2017-11-14 17:19:50,730 INFO  c.l.j.c.r.w.a.MethodCallConstraintHandler - [目标注解:redisValue,88,666]

相关文章

  • Aspect 加载 自定义注解

    自定义注解类 定义Aspect处理类 首先,确定项目spring配置文件中已经存在 其次,处理自定义注解 最后,使...

  • 深入Spring:自定义注解加载和使用

    深入Spring:自定义注解加载和使用

  • AspectJ注解

    aop注解@Component 加入自定义通知类@Service 加入服务层@Aspect 声明切面,修饰切面...

  • 手把手教你springboot 使用AOP切面编程及详细解析

    手把手教你springboot 使用AOP切面编程 注解 关于Aspect 注解的详细解释 @Aspect:作用是...

  • 深入Spring:自定义IOC

    前言 上一篇文章讲了如何自定义注解,注解的加载和使用,这篇讲一下Spring的IOC过程,并通过自定义注解来实现I...

  • AOP

    一、增加依赖 二、开发切面类aspect 增加注解@Aspect表明这是一个切面,增加注解@Component使其...

  • AOP实现系统日志功能

    1.pom文件 2.自定义日志注解 3.Aspect日志切面 4.数据库日志表 4.使用实例

  • Aspect获取自定义注解

    直接进入主题,什么是注解? @Target说明了Annotation所修饰的对象范围 @Retention定义了该...

  • springboot配置文件

    在配置文件中使用自定义参数 在代码里面使用自定义参数 通过注解@Value来加载自定义参数 PlaceHolder...

  • AOP防止接口重复提交

    实现原理 通过自定义注解标记哪些接口需要防范重复提交问题,并定义保持时间; 在Aspect中定义切点,织入所有被自...

网友评论

      本文标题:Aspect 加载 自定义注解

      本文链接:https://www.haomeiwen.com/subject/yypfvxtx.html