我想使用带有番石榴缓存的spring-cache,但我发现guava缓存已被春季官方文档标记为已弃用.我想知道为什么,他们没有给出一些解释.
有人可以提供一个很好的片段来构建和CacheBuilder通过Springxml 将Google番石榴注入依赖bean 吗?
为了概括,我需要一些示例Spring来说明使用构建器模式构造对象.
我有一组看起来像这样的缓存方法:
@Cacheable(value = "myCacheName", keyGenerator = "myKeyGenerator")
public Product getProduct(ProductRequest request) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
我需要为这些方法返回的对象设置不同的生存时间(有效期)。
问题:根据文档,提供的方法是在方法的返回类型上使用@RedisHash(timeToLive=…?)或@TimeToLive批注。但是,我不想使用与缓存相关的逻辑来污染我的域类。另外,我的某些方法返回的字符串或无法修改的类的对象。我希望以更可配置的方式实现它。还有一个名为的配置属性spring.cache.redis.time-to-live,但是它在所有地方都应用相同的生存时间。
问题:是否可以在方法级别指定生存/失效时间间隔?或一般来说,如何以更优雅的方式实现它?
在使用Netflix的Feign向服务发出HTTP请求的Spring Boot应用程序中,是否有一种简单的方法可以自动缓存并自动返回这些缓存的值?缓存应基于传递给请求的参数(类似于在X分钟内记住一个函数)。
我正在寻找类似以下@Cache注释的内容:
@Component
@FeignClient(value = "facebook", url = "${auth.facebook.url}")
public interface FacebookClient {
@Cache(600) // Something like this.
@RequestMapping(method = RequestMethod.GET, value = "/debug_token?input_token={input_token}&access_token={access_token}")
Map debugToken(@PathVariable("input_token") String inputToken, @PathVariable("access_token") String appToken);
}
Run Code Online (Sandbox Code Playgroud)
当然,我可以使用周围的装饰器自己缓存它FacebookClient,我想知道是否有一种更快/更少的代码方式。
spring caching netflix-feign spring-cloud-feign spring-cloud-netflix
我通常@Cacheable在spring-boot应用程序中将其与缓存配置结合使用,并为每个缓存设置特定的TTL(生存时间)。
我最近继承了一个spring boot应用程序,该应用程序使用时@Cacheable未明确说明缓存管理器和ttl。我将其更改为明确。
但是,当没有明确的内容时,我无法找出默认值。
我确实看过文档,但那里什么也没找到