gpt4 book ai didi

java - 如何配置Spring支持@Cacheable注解

转载 作者:行者123 更新时间:2023-12-01 10:56:01 31 4
gpt4 key购买 nike

我有一个非常简单的方法,我将其注释为@Cacheable,期望它只会对发送给它的每个参数执行一次,但它不会按预期运行并且每次都会执行。为了简化事情,假设我的方法如下:

      @Cacheable(value = "test")
public int someMethod(int val){
return val++;
}

我调用它两次,如下所示:

    int result1 = someMethod(1);
int result2 = someMethod(1);

据我了解,我应该进行一些配置,以便它能够按预期工作,可能在 xml 中。什么是合适的配置?

最佳答案

如果您使用的是 Spring Boot,您应该在配置文件中设置 @EnableCaching 注解:

@SpringBootApplication
//@EnableScheduling
@EnableAutoConfiguration
@EnableCaching
public class Application {
@Bean
public CacheManager cacheManager() {
// configure and return an implementation of Spring's CacheManager SPI
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(Arrays.asList(new ConcurrentMapCache("default")));
return cacheManager;
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

}

那么你应该注册CacheManager bean。请参阅doc

带有 @Cacheable 注释的 Spring 组件,其值应该存在于 CacheManager bean 的 caches 中。

@Service
public class CacheableService {
@Cacheable(value="default")
public int sum(int i,int q){
System.out.println("called");
return i+q;
}
}

关于java - 如何配置Spring支持@Cacheable注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33605627/

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