java - Java使用@value构造成员字段大小
问题描述
我正在使用番石榴缓存,我想保持最大大小可配置。我尝试为此使用@value,但问题是在@value 注入之前创建了私有成员缓存。如何从配置属性中读取此大小?我目前使用的代码如下
@Component
public class DataProcessor {
@Value("${cacheSize}")
private long cacheSize;
@Value(value = "${rawSensorDataTopic}")
private String rawSensorDataTopic;
private LoadingCache<String, DataPacketGroup> rfPacketsCache = CacheBuilder.newBuilder().maximumSize(cacheSize)
.concurrencyLevel(1).expireAfterWrite(15, TimeUnit.MINUTES)
.build(new CacheLoader<String, DataPacketGroup>() {
@Override
public DataPacketGroup load(String key) throws Exception {
return null;
}
});
解决方案
您可以将缓存创建放在带有注释的方法中@PostConstruct
@Component
public class DataProcessor {
@Value("${cacheSize}")
private long cacheSize;
@Value(value = "${rawSensorDataTopic}")
private String rawSensorDataTopic;
private LoadingCache<String, DataPacketGroup> rfPacketsCache;
@PostConstruct
private void createcache() {
CacheBuilder.newBuilder().maximumSize(1000)
.concurrencyLevel(1).expireAfterWrite(15, TimeUnit.MINUTES)
.build(new CacheLoader<String, DataPacketGroup>() {
@Override
public DataPacketGroup load(String key) throws Exception {
return null;
}
});
}
如果构造了bean并注入了属性,则将执行此方法
推荐阅读
- python - 尝试在没有已知父包的情况下进行相对导入 - 无法从并行字典导入 python 文件
- rust - 如果按照 Clippy 的建议使用 && 折叠嵌套会改变行为吗?
- javascript - 按开始和结束时间计算持续时间
- r - 如何生成具有不同方差(异方差)的随机数据。在 R 中
- javascript - 使用 window.open() 函数打开已打开的选项卡而不重新加载已打开的选项卡
- javascript - 从 Devtools 处理组件删除
- javascript - 如何使用 Puppeteer 处理弹出窗口
- java - 在我的数组中找到中位数,同时将数字从小到大排序
- angularjs - 为什么 dateAdapter.setLocale 默认为某些语言?
- javascript - 如何使用 Javascript 将样式表应用于元素