spring-boot-starter-aop及其使用场景说明

  • 内容
  • 评论
  • 相关

如今,AOP(Aspect Oriented Programming)已经不是什么崭新的概念了,在经历了代码生成、动态代理、字节码增强甚至静态编译等不同时代的洗礼之后,Java 平台上的 AOP 方案基本上已经以 SpringAOP 结合 AspectJ 的方式稳固下来(虽然大家依然可以自己通过各种字节码工具偶尔“打造一些轮子”)。

现在 Spring 框架提供的 AOP 方案倡导了一种各取所长的方案,即使用 SpringAOP 的面向对象的方式来编写和组织织入逻辑,并使用 AspectJ 的 Pointcut 描述语言配合 Annotation 来标注和指明织入点(Jointpoint)。

原则上来说,我们只要引入 Spring 框架中 AOP 的相应依赖就可以直接使用 Spring 的 AOP 支持了,不过,为了进一步为大家使用 SpringAOP 提供便利,SpringBoot 还是“不厌其烦”地为我们提供了一个 spring-boot-starter-aop 自动配置模块。

spring-boot-starter-aop 自动配置行为由两部分内容组成:

  1. 位于 spring-boot-autoconfigure的org.springframework.boot.autoconfigure.aop.AopAutoConfiguration 提供 @Configuration 配置类和相应的配置项。
  2. spring-boot-starter-aop 模块自身提供了针对 spring-aop、aspectjrt 和 aspectjweaver 的依赖。

一般情况下,只要项目依赖中加入了 spring-boot-starter-aop,其实就会自动触发 AOP 的关联行为,包括构建相应的 AutoProxyCreator,将横切关注点织入(Weave)相应的目标对象等,不过 AopAutoConfiguration 依然为我们提供了可怜的两个配置项,用来有限地干预 AOP 相关配置:

  • spring.aop.auto=true
  • spring.aop.proxy-target-class=false

对我们来说,这两个配置项的最大意义在于:允许我们投反对票,比如可以选择关闭自动的 aop 配置(spring.aop.auto=false),或者启用针对 class 而不是 interface 级别的 aop 代理(aop proxy)。

AOP 的应用场景很多,我们不妨以当下最热门的 APM(Application Performance Monitoring)为实例场景,尝试使用 spring-boot-starter-aop 的支持打造一个应用性能监控的工具原型。

spring-boot-starter-aop 在构建 spring-boot-starter-metrics 自定义模块中的应用

对于应用性能监控来说,架构逻辑上其实很简单,基本上就是三步走(如图 1 所示)。

本节暂时只构建一个 spring-boot-starter-metrics 自定义的自动配置模块用来解决“应用性能数据采集”的问题。

应用性能监控关键环节示意图
图 1  应用性能监控关键环节示意图

本文标题:spring-boot-starter-aop及其使用场景说明

本文地址:https://www.hosteonscn.com/6076.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注