【练手】自定义注解+AOP

在SpringBoot中实现自定义注解:( 声明注解的作用级别以及保留域 )

@Target({ElementType.METHOD,ElementType.PARAMETER}) //注解的作用级别
@Retention(RetentionPolicy.RUNTIME)                 //注解的保留域
public @interface Log {
    int value() default 99;
}

在SpringBoot中使用AOP:


<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-aopartifactId>
dependency>
//然后写切面类
@Aspect
@Component
public class LogAspect {

    @AfterReturning("@annotation(controllerLog)")
    public void doAfterReturning(JoinPoint joinPoint, Log controllerLog){
        System.out.println(controllerLog.value());
        System.out.println("this is AfterReturning");
    }

    @AfterThrowing("@annotation(com.hcs.annatation.Log)")
    public void doAfterThrowing(){
        System.out.println("this is AfterThrowing");
    }

}

最后,在表现层selectAll( )方法上使用自定义的注解进行测试:

@RestController
@RequestMapping("/users")
public class UserController {
    
    @GetMapping
    @Log(66)
    public void selectAll(){
    }
    
}

控制台输出:
66
this is AfterReturning

你可能感兴趣的:(SpringBoot,spring,boot,后端,java)