我正在尝试在 Spring Boot 应用程序中使用 CDI 装饰器。
这里是 CDI Decorators for Spring beans 文章,描述了其目的以及实现方式。这篇文章很老了,2011年了。
我可以将新的 CDI api 依赖项添加到我的 Spring Boot 项目中:
<!-- https://mvnrepository.com/artifact/jakarta.enterprise/jakarta.enterprise.cdi-api -->
<dependency>
<groupId>jakarta.enterprise</groupId>
<artifactId>jakarta.enterprise.cdi-api</artifactId>
<version>4.1.0</version>
</dependency>
如何启用其处理? Spring Boot 可以吗?
我在 Spring 官方文档中找不到任何内容。例如,关于 CDI api 有非常清晰的文档,但对于装饰器却没有类似的文档。
注意:请不要提供 Spring AOP/AspectJ,它是横切关注点的另一种更通用的替代方案。 关于区别:
装饰器在外观上与拦截器相似。然而,它们实际上执行的任务与拦截器执行的任务互补。拦截器执行与方法调用和 Bean 生命周期相关的横切任务,但不能执行任何业务逻辑。另一方面,装饰器通过拦截 bean 的业务方法来执行业务逻辑。这意味着它们的逻辑不是像拦截器那样可重用于不同类型的应用程序,而是特定于特定的应用程序。
原文章指附加模块spring-decorator。
该模块仍在使用
javax
API,而现代 String Boot 依赖于 jakarta
API。
spring-decorator
项目需要转换为
jakarta
API,才能在新项目中使用。转换本身可能与文本搜索和替换一样微不足道,但您需要分叉该项目。