我在一个单独的 jar 库中有一些标准的 Spring @Service 类,它们使用标准的 @Cacheable Spring 注释,在 Spring 引导项目中我声明了依赖项,配置了 CacheManager 并且可以正常工作!
我尝试在 Grails 3.1 项目中做同样的事情,但没有运气!我发现https://github.com/grails-plugins/grails-cache需要使用其“专有”@Cacheable 注释:
http://grails-plugins.github.io/grails-cache/3.0.x/api/grails/plugin/cache/Cacheable.html
作为解决方法,我分叉了一些服务,只是为了使用 Grails @Cacheable 并且它正在工作,但我希望有一个在 grails 下工作的 @Service !
我错误配置了一些东西,它的行为方式不同,但我不知道它是什么!
我想在 spring only 和 grails 项目之间共享这个 jar 库,但到目前为止,我无法进行缓存工作,除非我在 grails-app/services 目录下分叉服务类并使用“专有”@Cacheable 注释;
我尝试删除插件并使用 org.springframework.context.annotation.Bean 注释在 /GPsGrails3/grails-app/init/gpsgrails3/Application.groovy 中配置 bean 和缓存:
@Primary
@Bean
public ConcurrentMapCacheManager concurrentMapCacheManager() {
return new ConcurrentMapCacheManager();
}
@Bean
public SignatureService signatureService() {
SignatureService _signatureService = new SignatureService();
return _signatureService;
}
我将 signatureService 放在 grails-app/services 目录下:/GPsGrails3/grails-app/services/it/finmatica/ifw/impl/SignatureService.groovy
也许我必须在 /GPsGrails3/grails-app/conf/spring/resources.groovy 中配置我的 bean?
我必须使用插件的版本 4?编译“org.grails.plugins:cache:4.+”