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