Following the spring documentation about cache I could use cache on my project, but how can I configure guava to define a expired time or size per cache name?
applicationConfig.xml
<bean id="cacheManager" class="org.springframework.cache.guava.GuavaCacheManager"/>
Foo.java
@Cacheable(value="courses", key="#user.id")
public List<Course> getCoursesByUser(User user) {
...
}
You can configure caches separately. See Spring Guava cache
@Bean
public CacheManager cacheManager() {
SimpleCacheManager simpleCacheManager = new SimpleCacheManager();
GuavaCache bookCache = new GuavaCache("book", CacheBuilder.newBuilder().build());
GuavaCache booksExpirableCache = new GuavaCache("books", CacheBuilder.newBuilder()
.expireAfterAccess(30, TimeUnit.MINUTES)
.build());
simpleCacheManager.setCaches(Arrays.asList(bookCache, booksExpirableCache));
return simpleCacheManager;
}
You can specify CacheBuilder for your GuavaCacheManager in your Spring configuration
@Bean
public CacheManager cacheManager() {
GuavaCacheManager cacheManager = new GuavaCacheManager();
cacheManager.setCacheBuilder(
CacheBuilder.
newBuilder().
expireAfterWrite(2, TimeUnit.SECONDS).
maximumSize(100));
return cacheManager;
}
<bean id="legendaryCacheBuilder"
class="com.google.common.cache.CacheBuilder"
factory-method="from">
<constructor-arg value="maximumSize=42,expireAfterAccess=10m,expireAfterWrite=1h" />
</bean>
For more information look at:
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/cache/CacheBuilderSpec.html
Injecting Google guava cache builder into bean via Spring
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With