如何在 spring 引导中读取 属性 文件

how to read from property file in spring boot

我能够从我的 spring 启动应用程序中的 属性 文件中读取('fruits' 的值),成功地使用 @Value 如下。

@Value("${fruits}")
private String[] fruitarray;

来自下面

文件:applicaton.properties

#section_1
fruits=apple,mango,banana
#section_2
apple.native=aaaa
apple.cost=100
apple.name=xxyyzz

现在,我想知道如何从属性文件的 section_2 动态访问键值。 我的意思是,...在我们上面的代码中,我们已经得到了水果数组,并使用@Value 将其设置为 'fruitarray'。现在,我将如何通过以 java/spring-boot 方式使用 fruitarray[0] 变量来访问 'apple.native' 的值?

谢谢

就这么简单:

    @Value("${apple.native}")
    private String Native;

    @Value("${apple.cost}")
    private Double cost;

    @Value("${apple.name}")
    private String name;

您可以尝试将所有属性作为 Bean 获取,并在遍历水果列表时动态访问您的属性:

@Autowired
private Environment env;
...
env.getProperty(fruits[i] + ".native");
...

来源:http://www.baeldung.com/properties-with-spring#usage

您也可以通过以下方式定义属性文件

key.0=value0
key.1=value1

/** Return 属性文件中的数组。数组必须定义为 "key.0=value0", "key.1=value1", ... */ public 列出 getSystemStringProperties(字符串键){

// result list
List<String> result = new LinkedList<>();

// defining variable for assignment in loop condition part
String value;

// next value loading defined in condition part
for(int i = 0; (value = YOUR_PROPERTY_OBJECT.getProperty(key + "." + i)) != null; i++) {
    result.add(value);
}

// return
return result;

}