Springboot源码分析之EnableAspectJAutoProxy

@EnableAspectJAutoProxy是Spring Framework中用于开启注解驱动的AOP的注解。在Spring Boot中,通过在配置类上添加@EnableAspectJAutoProxy注解来开启AOP。

@EnableAspectJAutoProxy注解的作用是在Spring应用上下文中启用AspectJ自动代理。AspectJ自动代理是通过Spring AOP服务实现的,它会对使用@Aspect注解标注的切面进行自动代理。在一个Spring应用中,只需要开启@EnableAspectJAutoProxy注解,并在需要使用切面的bean上添加@Aspect注解就可以了。

@EnableAspectJAutoProxy注解有一个proxyTargetClass属性,默认值为false,表示使用基于JDK的动态代理,如果设置为true,则使用CGLIB代理。这个属性一般不需要配置,可以根据实际情况选择合适的代理方式。

使用方法

添加@EnableAspectJAutoProxy注解,通常添加在配置类上。

``` java

@Configuration

@EnableAspectJAutoProxy

public class AppConfig {

// 其他配置

}

```

案例说明

以一个简单的日志切面为例,在方法执行前后打印日志。

定义一个切面类:

``` java

@Aspect

@Component

public class LogAspect {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Before("execution(* com.example.demo.service.*.*(..))")

public void before(JoinPoint joinPoint) {

String methodName = joinPoint.getSignature().toShortString();

logger.info("before method :" + methodName);

}

@After("execution(* com.example.demo.service.*.*(..))")

public void after(JoinPoint joinPoint) {

String methodName = joinPoint.getSignature().toShortString();

logger.info("after method :" + methodName);

}

}

```

在配置类中添加@EnableAspectJAutoProxy注解:

``` java

@Configuration

@EnableAspectJAutoProxy

public class AppConfig {

@Bean

public LogAspect logAspect() {

return new LogAspect();

}

// 其他配置

}

```

这样,当调用com.example.demo.service包下的方法时,会自动执行LogAspect中的before和after方法,根据实际情况可以在方法前后添加自定义的逻辑。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(117) 打赏

评论列表 共有 1 条评论

孤寂像条狗 11月前 回复TA

没人为我遮风挡雨,我就自己做自己的英雄。兔年一切好运!

立即
投稿
发表
评论
返回
顶部