当前位置: 首页 > 知识库问答 >
问题:

Java使用@value构造成员字段大小[重复]

闻人飞翼
2023-03-14

我使用番石榴缓存,我想保持最大大小可配置。我尝试使用@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;
            }
        });

共有1个答案

颛孙子民
2023-03-14

您可以将缓存创建放在带有@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并注入属性,则将执行此方法

 类似资料:
  • 问题内容: 我只是想将一些C代码转换为Java,而却遇到了一些麻烦。 在C中,要基于变量获取特定宽度,我可以使用: 并将其格式化为基于的特定大小。 试: 导致错误,因为它不喜欢。 我目前有以下问题: 但我希望有一种更好的方法,是吗? 问题答案: 在使用前声明一个额外的变量: (这是我从网络搜索中找到的第一个解决方案)

  • 我已经创建了一个Java记录,并且希望有一个构造函数,与默认构造函数相比,它可以接受更少的参数,并根据给定的参数计算和初始化所有成员。 然而,我发现这很难实现,因为自定义构造函数的第一行必须调用默认构造函数。我目前的方法是根据需要调用计算函数,但这会导致不必要的处理。 肯定有更好的方法来实现这一点吗?

  • 我试图使用OpenCSV将CSV文件解析成对象列表,这样我就可以将学生数据加载到我的学生团队分配器系统中。 我一直在“将记录解析为Java对象”的标题下遵循本指南 在一些依赖性问题之后,我让它输出一个学生对象列表,但是CSV列没有像应该的那样绑定到成员字段。打印测试为每个对象的字段返回空值。 我在Student中有两个构造函数,一个初始化3个字段,另一个为空。我知道当前使用的是空的,因为删除这个会

  • 问题内容: 我如何使用该字段注入包含Map的属性文件,以用作其他构造函数arg。 从属性文件加载地图 该bean当前使用以下命令进行设置: 相当于Java: 谢谢 问题答案: 像这样: 这利用了使用任意静态工厂方法创建bean的能力,在这种情况下,使用工厂工厂方法来创建bean,然后将其注入到的适当构造函数中。

  • 当我尝试在我的字段中添加十进制输入时,例如:12.54。它表示以下文本:请输入一个有效的值。两个最接近的有效值是12和13。 它不允许我在字段中键入十进制输入。。。。 我如何解决这个问题?

  • 给予 什么是?它是实现定义的还是未定义的行为?C和C的答案不同吗?