添加自定义注解

本文介绍了一种使用自定义注解@NoHealth排除特定接口日志输出的方法,以及一个用于验证手机号格式的自定义注解@MobilePhone,确保输入符合特定规则。

案例1:

1.demand,排除某个接口的日志输出,用自定义注解@NoHealth,只要有该注解的方法,切面日志忽略该方法。

2.code

NoHealth interface:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author li
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface NoHealth {
}

Aspect class:

排除有该注解的方法!@annotation(NoHealth)

 

@Component
@Aspect
public class ControllerAspect extends AbstractAspect {

    private static CxLogger logger = CxLogManager.getLogger(ControllerAspect.class).defaultTag("type", "ControllerAspect");

    private static final String INBOUND = "INBOUND";

    @Pointcut("execution(* com.xxx.xxx.xxx.controller..*(..))&&!@annotation(NoHealth)")
    private void controllerPointCut() {
    }

//*******other

}

controller 

/**
 * @author li
 */
@RestController
public class HealthCheckController {

    private static CxLogger logger = CxLogManager.getLogger(AccessController.class).tag("type", "controller");

    @GetMapping("/_health")
    @NoHealth
    public String check() {
        
        return "OK";
    }

    
}

 

 

/**********************分割线******************************/

案例2:

需求:一个自定义注解,接收参数只能是‘-+数字’最长20位 的 属性注解@MobilePhone

定义类:

package com.cathaypacific.ird2.iam.validator;


import org.apache.commons.lang.StringUtils;

import javax.validation.Constraint;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.Payload;
import java.lang.annotation.*;
import java.util.regex.Pattern;
/**
 * Desc:
 *
 * @author daxing.li
 * @create 2019-06-26 14:50
 */

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {MobilePhone.MobilePhoneConstraintValidator.class})
@Documented
public @interface MobilePhone {

    String message() default "Invalid MobilePhone Number";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    public static class MobilePhoneConstraintValidator implements ConstraintValidator<MobilePhone, String> {

        public MobilePhoneConstraintValidator(){

        }

        @Override
        public void initialize(MobilePhone constraintAnnotation){

        }

        @Override
        public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
            if (StringUtils.isEmpty(s)) {
                return true;
            } else {
                return Pattern.matches("^[-+0-9]{0,20}$", s);
            }
        }
    }

}

 

2.应用:

xxxRequest.class

@Getter
@Setter
public void xxxRequest{

  @MobilePhone(message = "MobilePhone only for 'numbers and - +',and length cannot exceed 20 characters")
    @JsonProperty("mobile_phone")
    private String mobilePhone;
}

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值