使用aop、解析器处理自定义注解

本文介绍了如何在Java中使用AOP进行前置通知处理自定义注解,主要用于限制字段长度。由于无法在参数级别通过AOP拦截,选择了使用解析器来处理加在参数和属性上的注解。对于多个参数的情况,选择了不处理,而当属性添加注解时,不限定特定场景,所有带有注解的属性都会进行长度限制。同时,配置了解析器,并利用全局异常处理进行错误反馈。欢迎大家提供更好的实现方式。
摘要由CSDN通过智能技术生成

先随便定义一个自定义注解

@Target({
   ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LimitLength {
   

    int minLength() default 1;

    int maxLength() default 1;
}

这里预计用来限制字段的长度,本来最开始的设想是限制密码长度的(只是随便实现个功能,不要纠结加密、DTO的事),所以在加到方法上时(即下面aop处理时)仅仅处理了密码的长度。

@Aspect
@Component
public class LimitLengthAspect {
   

    @Before("@annotation(com.islands.common.aspect.annotation.LimitLength)")
    public void checkBefore(JoinPoint point)  {
   
        // 获取注解
        MethodSignature signature = (MethodSignature) point.getSignature();
        Method method = signature.getMethod();
        LimitLength annotation = method.getDeclaredAnnotation(LimitLength.class);
        // 获取实体
        Object[] args = point.getArgs();
        for (Object arg : args) {
   
           if (arg instanceof User) {
   
               String password = ((User</
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值