目前我正在使用代理使用缓存抽象。代理的问题是内部方法调用不起作用。现在,我想使用编译时编织而不是代理作为内部方法调用的工作原理。我在谷歌上搜索过,但我没有找到任何解释如何使用编译时编织的实质性链接。加载时间编织有很多链接。任何人都可以举出任何使用缓存抽象或一些相关链接进行编译时编织的例子吗?
提前致谢。
目前我正在使用代理使用缓存抽象。代理的问题是内部方法调用不起作用。现在,我想使用编译时编织而不是代理作为内部方法调用的工作原理。我在谷歌上搜索过,但我没有找到任何解释如何使用编译时编织的实质性链接。加载时间编织有很多链接。任何人都可以举出任何使用缓存抽象或一些相关链接进行编译时编织的例子吗?
提前致谢。
您可以使用 maven aspectj 插件添加用于缓存的 spring 方面,方法是识别方面类并将其手动应用于所需的类(检查方面的 spring-aspects 和 spring-cache jars 内部)。
这种机制与弹簧没有直接联系,它可以在任何方面完成,而不仅仅是弹簧方面。
之所以不使用,是因为不是很方便,因为我们需要在编译的时候就知道要通知的类,不能依赖spring注解扫描机制。
加载时编织解决了您提到的使可重入调用以更透明的方式工作的问题,而没有编译时编织的不便。加载时编织是 spring 使用 aspectJ 编织的推荐方式,由 annotation 启用@EnableLoadTimeWeaving
。
对于您提到的具体用例,似乎没有引入编译时编织的好案例,一般情况下编译时编织没有好的用例,这解释了缺乏在线可用的文档。
我相信您提到的用例的最佳选择是使用加载时间编织。