在SpringBoot中实现自定义注解:( 声明注解的作用级别以及保留域 )
@Target({ElementType.METHOD,ElementType.PARAMETER}) //注解的作用级别
@Retention(RetentionPolicy.RUNTIME) //注解的保留域
public @interface Log {
int value() default 99;
}
在SpringBoot中使用AOP:
<!-- 先添加依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</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