xed*_*edo 10 java spring caching guava
在关于缓存的spring文档之后,我可以在我的项目中使用缓存,但是如何配置guava来定义每个缓存名称的过期时间或大小?
applicationConfig.xml
<bean id="cacheManager" class="org.springframework.cache.guava.GuavaCacheManager"/>
Run Code Online (Sandbox Code Playgroud)
Foo.java
@Cacheable(value="courses", key="#user.id")
public List<Course> getCoursesByUser(User user) {
...
}
Run Code Online (Sandbox Code Playgroud)
Kyr*_*nko 28
您可以单独配置缓存.请参阅Spring Guava缓存
@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;
}
Run Code Online (Sandbox Code Playgroud)
mav*_*azy 17
您可以在Spring配置中为GuavaCacheManager指定CacheBuilder
@Bean
public CacheManager cacheManager() {
GuavaCacheManager cacheManager = new GuavaCacheManager();
cacheManager.setCacheBuilder(
CacheBuilder.
newBuilder().
expireAfterWrite(2, TimeUnit.SECONDS).
maximumSize(100));
return cacheManager;
}
Run Code Online (Sandbox Code Playgroud)
<bean id="legendaryCacheBuilder"
class="com.google.common.cache.CacheBuilder"
factory-method="from">
<constructor-arg value="maximumSize=42,expireAfterAccess=10m,expireAfterWrite=1h" />
</bean>
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看:
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/cache/CacheBuilderSpec.html
| 归档时间: |
|
| 查看次数: |
20210 次 |
| 最近记录: |