在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