spring - 在 Spring 中使用 Cache Abstraction 进行编译时编织

标签 spring caching aspectj compile-time-weaving

目前我正在使用代理使用缓存抽象。代理的问题是内部方法调用不起作用。现在,我想使用编译时编织而不是代理作为内部方法调用。我在谷歌上搜索过,但没有找到任何实质性链接来解释如何使用编译时织入。加载时间编织的链接有很多。任何人都可以给出任何使用缓存抽象或相关链接进行编译时编织的示例吗??

提前致谢。

最佳答案

您可以使用 Maven aspectj 插件添加用于缓存的 spring 方面,方法是识别方面类并将其手动应用到您想要的类(检查方面的 spring-aspects 和 spring-cache jar )。

这个机制与spring没有直接联系,它可以用任何方面来完成,而不仅仅是spring方面。

之所以不用它是因为它不是很方便,因为我们需要在编译时就知道我们要通知的类,不能依赖spring的注解扫描机制。

加载时编织解决了您提到的使可重入调用以更透明的方式工作的问题,而没有编译时编织的不便。加载时间编织是 spring 为使用 aspectJ 编织而采用的推荐方式,通过注释 @EnableLoadTimeWeaving 启用。

对于你提到的具体用例,似乎没有很好的案例来介绍编译时织入,一般来说编译时织入没有好的用例,这说明网上没有可用的文档。

我相信对于您提到的用例,您的最佳选择是改用加载时织入。

关于spring - 在 Spring 中使用 Cache Abstraction 进行编译时编织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23032434/

相关文章:

java - PointCut 将使用某些参数注释的方法与注释相匹配

spring - 我的 Spring Boot 应用程序能否仅在某些 @RequestMappings 上运行 HTTPS?

spring - 根据 Docker 化和链接的 ActiveMQ 对 Docker 化的 Spring Boot 应用程序进行身份验证

amazon-web-services - 在没有自定义 docker 镜像的情况下在 codebuild 中缓存 go 模块

java - AspectJ-使用if()表达式的切入点导致无限递归

java - 在处理抛出 Throwable 的方法时,我应该避免抛出 Throwable 吗?

javascript - 在 javascript 中添加静态资源的 URL 路径(在 Spring MVC 中)

java - 在方法的开头使用注入(inject)的 spring bean 和自定义注释做一些事情

android - 从 web 服务将图像存储在 android 应用程序中有哪些不同的选项?

用于维护海量数据的 Java 缓存框架