现象
仅限于初次接触Spring AOP的患者😂
SpringBoot项目在使用@Aspect注解配置切面类后,实际运行的时候并不会执行相关切面类中的代码。
解决
在Application类前添加@EnableAspectJAutoProxy注解。
如果不是使用SpringBoot的Spring MVC项目,需要在对应位置添加<aop:aspectj-autoproxy proxy-target-class="true" />配置。
原因
@EnableAspectJAutoProxy其实就是控制AOP的“开关”,不配置这个当然没用啦 ╮(╯▽╰)╭。
package org.springframework.context.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import({AspectJAutoProxyRegistrar.class})
public @interface EnableAspectJAutoProxy {
    boolean proxyTargetClass() default false;
    boolean exposeProxy() default false;
} @EnableAspectJAutoProxy用于启用自动代理。有两个参数:
- boolean proxyTargetClass
用于配置代理的具体实现方式。proxyTargetClass 代理实现方式 false(默认值)使用 java接口进行代理true使用 cglib进行代理 - boolean exposeProxy
配置内部调用的暴露情况,即是否对内部调用也进行代理,默认为false(不代理内部调用)。 
相关学习
这个博客介绍
@EnableAspectJAutoProxy注解挺详细:
spring @EnableAspectJAutoProxy背后的那些事(spring AOP源码赏析)

京公网安备 11010502036488号