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

如何用Spring@Value填充java属性文件中的HashMap

罗诚
2023-03-14
@Service
@PropertySource(value = "classpath:my_service.properties")
public class SomeServiceImpl implements SomeService {


    @Value("#{conf['service.cache']}")
    private final boolean useCache = false;

    @Value("#{conf['service.expiration.[<custom name>]']}")
    private final HashMap<String, String> expirations = new HashMap<String, String>();
service.cache=true
service.expiration.name1=100
service.expiration.name2=20

>

  • 名称1=100

    名称2=20

  • 共有1个答案

    罗毅
    2023-03-14

    您可以使用类似于SPEL JSON的语法在属性文件中编写一个简单的映射或列表的映射。

    simple.map={'KEY1': 'value1', 'KEY2': 'value3', 'KEY3': 'value5'}
    
    map.of.list={\
      'KEY1': {'value1','value2'}, \
      'KEY2': {'value3','value4'}, \
      'KEY3': {'value5'} \
     }
    

    我对多行属性使用了\以增强可读性

    然后,在Java中,您可以像这样使用@value自动访问和解析它。

    @Value("#{${simple.map}}")
    Map<String, String> simpleMap;
    
    @Value("#{${map.of.list}}")
    Map<String, List<String>> mapOfList;
    

    使用${simple.map}@value从属性文件中获取以下字符串

    "{'KEY1': 'value1', 'KEY2': 'value3', 'KEY3': 'value5'}"
    

    然后,就像内联一样对其进行计算

    @Value("#{{'KEY1': 'value1', 'KEY2': 'value3', 'KEY3': 'value5'}}")
    

    您可以在官方文档中了解更多信息

     类似资料:
    • 问题内容: 是否可以使用Spring @Value将值从属性文件映射到HashMap。 目前,我有这样的事情,映射一个值不是问题。但是我需要在HashMap到期中映射自定义值。这样的事情可能吗? 属性文件:“ my_service.properties” 是否可以像这样的键映射:值集 name1 = 100 name2 = 20 问题答案: 在Spring配置中注册属性文件: 然后创建组件: 当我

    • 问题内容: 我建立了一个小型应用程序,可以读取Excel文件并为我创建所有必要的SQL语句。客户不时操纵Excel文件。 Excel文件的第一行包含一个标题,我在阅读这些行时需要将其转换为整数。例如,在生成SQL语句之前,标题“英语”需要翻译成“ 30”。(只是一些内部定义)。(您可以将其与DNS- IP地址映射中的人类可读域名进行比较)目前,我手动进行映射,但是我想通过一个很小的Spring配置

    • 问题内容: 我想使用该类填充一个。 我想将条目加载到文件中,然后将其复制到中。 之前,我曾经使用属性文件初始化,但是现在我已经定义了,并且只想在构造函数中对其进行初始化。 较早的方法: 但是现在,我有这个 如何将属性对象分配给此处? 问题答案: 如果我理解正确,则属性中的每个值都是代表整数的字符串。因此,代码如下所示:

    • 我有一个Java类,它从JSON文件/数据库/其他东西加载我的应用程序的属性。 我已将配置为Spring上下文中的bean。 现在我想在spring上下文文件中使用中的一个值来表示不支持SpEL的内容,例如spring集成日志通道适配器,例如。 是否有一种方法可以设置可以使用SpEL填充的“属性”?

    • 我需要使用jsp jstl在jsp中呈现所有java bean属性。我正在使用spring mvc。下面是Spring代码的一部分。 JSP JSTL代码: 实际上,POJO中有大约300个属性,手动编写类似属性非常繁琐。 我想要一些循环方式来获取所有属性值,这些属性值是使用jstl的jsp,或者可能是其他方式。请分享你的小贴士! 谢谢

    • 在Struts2中,您可以使用属性文件中的值填充组件的标签。属性文件必须与将提供JSP的Struts2操作类具有相同的名称,并且与该操作类位于同一文件夹中。 我想对显示标签列做同样的事情。但它似乎不起作用。 displaytag中的列有一个名为titleKey的属性,可以让您这样做。但它似乎不起作用。 titleKey字段未从属性文件中获取值。当我使用Struts2文本字段的key字段,但不使用列