在Spring Boot中简单实现如何自定义注解,注释说明了部分类或注解的作用
##导入依赖
定义注解org.springframework.boot spring-boot-starter-aop
@Retention(RetentionPolicy.RUNTIME) // @Retention注解根据RetentionPolicy指定注解的生命周期 // RetentionPolicy.SOURCE 保留在源文件,当源文件被加载为.class文件时,注解遗弃 // RetentionPolicy.CLASS 保留在class文件,当jvm加载class文件后,注解遗弃,默认周期 // RetentionPolicy.RUNTIME 保留在class文件,且jvm加载后,仍然保留 @Target(ElementType.METHOD) // @Target注解根据ElementType指定注解作用的范围 public @interface UserInfoCheck { }Aspect
@Aspect // 将当前类标识为切面供容器读取 @Order(0) // @Order注解用于指定Bean在spring ioc容器的执行顺序,数字越小,优先级越高 @Component // @Component注解用于当类不属于Controller或者Service时,使用该注解,将类注入spring容器 public class UserInfoCheckAspect { @Before("@annotation(userInfoCheck)") public void userInfoCheck(JoinPoint joinPoint, UserInfoCheck userInfoCheck) throws Exception { // JoinPoint类 // joinPoint.getArgs(); 获取目标方法的参数对象 // joinPoint.getTarget(); 获取被代理的对象 // joinPoint.getThis(); 获取代理对象 for(Object obj : joinPoint.getArgs()){ // 匹配需要校验的参数 if(obj instanceof UserInfoDto){ UserInfoDto userInfoDto = (UserInfoDto) obj; if(userInfoDto != null){ return; } } } throw new Exception("用户信息为空"); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)