gpt4 book ai didi

grails - 在常规Groovy类上使用Grails缓存插件注释

转载 作者:行者123 更新时间:2023-12-02 15:27:01 27 4
gpt4 key购买 nike

是否可以在常规Groovy类中的方法上使用Grails Cache插件的注释(即:@Cacheable)?该插件的文档中没有提及任何有关常规Groovy类的内容,并且根据我自己的测试,注释在常规类中使用时没有任何作用。所以我只是想知道是否有一种方法可以使注释在常规Groovy类中工作。

当前的替代方法是直接通过Cache Manager bean直接访问方法中的缓存,但是最好使用批注。

最佳答案

不,注释仅适用于服务和 Controller 。插件检测到注释并为该服务创建代理,该代理将拦截所有方法调用并首先执行与缓存相关的工作。因此,如果该方法在缓存中有一个值,它将不会打扰您的真实方法,而是返回缓存的值。但是,如果未缓存,它将调用您的方法并使用其返回值,但稍后将其缓存。

之所以可行,是因为您必须从Spring ApplicationContext检索服务(或者让Grails为您服务),这使Spring有机会为您提供代理而不是真正的实现实例,但是Spring无法了解访问没有AOP或其他更具侵入性的解决方案的常规Groovy类。

话虽如此,该插件在限制仅 Controller 和服务方面可能过于严格。它专门处理 Controller ,因为它们涉及缓存Web请求而不是方法返回值,但是就缓存而言,Grails服务与任何其他带注释的Spring Bean之间应该没有太大的区别。您可以手动在grails-app/conf/spring/resources.groovy中添加自己的Spring bean,也可以将它们添加到Config.groovy的grails.spring.bean.packages列表中,因此应更新插件以查找所有带注释的类。您可以在https://jira.grails.org/browse/GPCACHE的插件的JIRA中请求它

关于grails - 在常规Groovy类上使用Grails缓存插件注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25998332/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com