spring - using google guava cache

烈酒焚心 提交于 2019-12-07 17:26:50

问题


I'm trying to use google guava cache in my spring app, but result is never caching.

This are my steps:

in conf file:

@EnableCaching
@Configuration
public class myConfiguration {
        @Bean(name = "CacheManager")
        public CacheManager cacheManager() {
            return new GuavaCacheManager("MyCache");
        }
}

In class I want to use caching:

public class MyClass extends MyBaseClass {
    @Cacheable(value = "MyCache")
    public Integer get(String key) {
        System.out.println("cache not working");
        return 1;
    }
}

Then when I'm calling:

MyClass m = new MyClass();
m.get("testKey");
m.get("testKey");
m.get("testKey");

It's entering function each time and not using cache: console:

 cache not working
 cache not working 
 cache not working

Does someone have an idea what am I missing or how can I debug that?


回答1:


You should not manage a spring bean by yourself. Let spring to manage it.

@EnableCaching
@Configuration
public class myConfiguration {
        @Bean(name = "CacheManager")
        public CacheManager cacheManager() {
            return new GuavaCacheManager("MyCache");
        }

        @Bean
        public MyClass myClass(){
            return new MyClass();
        }
}

After that you should use MyClass in a managed manner.

public static void main(String[] args) throws Exception {
    final ApplicationContext applicationContext = new AnnotationConfigApplicationContext(myConfiguration.class);
    final MyClass myclass = applicationContext.getBean("myClass");
    myclass.get("testKey");
    myclass.get("testKey");
    myclass.get("testKey");
}


来源:https://stackoverflow.com/questions/32093019/spring-using-google-guava-cache

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!