可以清晰的看到,已经写入了一条数据,并且name中的内容和controller中自定义注解的内容相同。这就代表了这个注解已经生效并且可以正常的工作了。 五 应用拓展 细心的小伙伴会发现,代码中的username其实是空值,这个值应该获取到的是操作人的姓名。之所以是空值,最大的原因就是这个demo根本没有登录环节,既然没有登录,那么...
④:注解名为WebLog; ⑤:定义一个属性,默认为空字符串; 四、配置 AOP 切面 在配置 AOP 切面之前,我们需要了解下aspectj相关注解的作用: @Aspect:声明该类为一个注解类; @Pointcut:定义一个切点,后面跟随一个表达式,表达式可以定义为切某个注解,也可以切某个 package 下的方法; 切点定义好后,就是围绕这个切点...
RetentionPolicy.SOURCE: 注解只保留在源文件中 RetentionPolicy.CLASS : 注解保留在class文件中,在加载到JVM虚拟机时丢弃 RetentionPolicy.RUNTIME: 注解保留在程序运行期间,此时可以通过反射获得定义在某个类上的所有注解。 AOP切面 importorg.aspectj.lang.ProceedingJoinPoint; importorg.aspectj.lang.annotation.Around; im...
} @Pointcut("@annotation(自定义注解路径)")publicvoidnoAnnotation() { }finalLogger logger = tools_log.getLogger(this.getClass()); @Around("LogHelp()&&!noAnnotation()")publicObject arround(ProceedingJoinPoint joinPoint) { MDC.put("REQUESTID", UUID.randomUUID().toString()); logger.info("方法...
* 实现@Mylog注解功能的切面类 */ @Component @Aspect @Slf4j public class MyLogAop { @Around( "@annotation(com.aaron.SpringBoot1.annotation.MyLog)" ) public void log(ProceedingJoinPoint joinPoint) throws Throwable { // 获取方法信息 MethodSignature methodSignature = (MethodSignature)joinPoint.getSign...
/** *@annotation中的路径表示拦截特定注解 */@Pointcut("@annotation(cn.sevenyuan.demo.aop.lock.RedisLockAnnotation)")publicvoidredisLockPC(){ } Around 前后进行加锁和释放锁 前面步骤定义了我们想要拦截的切点,下一步就是在切点前后做一些自定义操作: ...
敲代码的小芋头:简单的Spring Boot 22 - AOP @Before @AfterThrowing @AfterReturning 如果不想在拦截...
spring-boot-starter-aop 版本号 com.alibaba fastjson 版本号 因为这里是要在执行一个方法之前对传入的参数进行校验,所以这里使用到了AOP的环绕通知 AOP里面的通知方式: Before:前置通知After:后置通知Around:环绕通知 这里我选用的是环绕通知,环绕通知是这几个通知中最强大的一个功能。我选择环绕通知的一个原因是,...