由于@CreateCache 的expires,name,localExpire,localLimit 相对来说放在配置文件或从nacos读取最灵活,否则就得改代码发版。建议支持从Nacos,或Spring 环境中拿到对应该的过期时间配置。如 @CreateCache(configId="userlistKey") 则 jetcache.configkey.userlistKey= { name= "user.list",expires=100....}
d8tt03nd1#
这个需求是有意义的,不过可能改动比较大,现在没有这方面的计划。如果有兴趣可以自己试试改。
u2nhd7ah2#
看到 @CreateCache 打了删除标记,是准备以后使用QuickConfig手动建立缓存管理对象吗? 还是有替代的注解?
6bc51xsx3#
是的,CreateCache注解的javadoc文档有说明。
q7solyqu4#
附议,@cached 注解的localExpire参数,也希望能做到有个可以读取spirng环境中的变量作为全局的默认值。目前我尝试自己改造了一下,用以下方式实现了
1.添加CustomizeSpringCacheContext实现类
public class CustomizeSpringCacheContext extends SpringCacheContext { private long globalLocalExpire = CacheConsts.UNDEFINED_INT; public CustomizeSpringCacheContext(SpringConfigProvider configProvider, GlobalCacheConfig globalCacheConfig, ApplicationContext applicationContext, JetCacheProperties jetCacheProperties) { super(configProvider, globalCacheConfig, applicationContext); if (jetCacheProperties != null) { // 注入外部环境变量 globalLocalExpire = jetCacheProperties.getLocalExpire(); } } @Override protected Cache buildLocal(CachedAnnoConfig cachedAnnoConfig, String area) { if (cachedAnnoConfig.getCacheType() == CacheType.BOTH && cachedAnnoConfig.getLocalExpire() == CacheConsts.UNDEFINED_INT) { // 核心逻辑,如果LocalExpire 为默认值 ,则使用 globalLocalExpire 作为 本地缓存值,这里可以继续扩展根据不同的情况设置不同值 cachedAnnoConfig.setLocalExpire(this.globalLocalExpire); } return super.buildLocal(cachedAnnoConfig, area); } }
2.注册bean
// 自定义的环境变量对象 @Autowired private JetCacheProperties jetCacheProperties; @Autowired private ApplicationContext applicationContext; @Bean public SpringConfigProvider springConfigProvider() { return new SpringConfigProvider(){ @Override protected CacheContext newContext() { return new CustomizeSpringCacheContext(this, globalCacheConfig, applicationContext,jetCacheProperties); } }; }
4条答案
按热度按时间d8tt03nd1#
这个需求是有意义的,不过可能改动比较大,现在没有这方面的计划。如果有兴趣可以自己试试改。
u2nhd7ah2#
看到 @CreateCache 打了删除标记,是准备以后使用QuickConfig手动建立缓存管理对象吗? 还是有替代的注解?
6bc51xsx3#
看到 @CreateCache 打了删除标记,是准备以后使用QuickConfig手动建立缓存管理对象吗? 还是有替代的注解?
是的,CreateCache注解的javadoc文档有说明。
q7solyqu4#
附议,@cached 注解的localExpire参数,也希望能做到有个可以读取spirng环境中的变量作为全局的默认值。目前我尝试自己改造了一下,用以下方式实现了
1.添加CustomizeSpringCacheContext实现类
2.注册bean