如何从 SpringBoot 中的属性文件加载嵌套键值对

How to load nested key value pairs from a properties file in SpringBoot

有没有更好的方法来使用 Spring/Spring Boot 来实现以键值对作为值的属性文件? 我想创建一个 属性 文件,其中的键包含一对键值对作为值。

我尝试了以下实现:-

属性文件:-

Fiat=model:pet,year:1996
Honda=model:dis,year:2000

我下面 class 试图读取属性文件。

@Component
@PropertySources(@PropertySource("classpath:sample.properties"))
public class PropertiesExtractor {

    @Autowired
    private Environment env;

    public String pullValue(String node) {

    String value = env.getProperty(node);
    System.out.println(value);//for Fiat, i get syso as **model:pet,year:1996**
}

}

我需要使用 java 解析这些值,以获得单独的值。这是实现这一目标的唯一出路吗?

有没有更好的方法在 Java 中使用嵌套的 属性 文件?

创建一个 Car 对象或带有 modelyear 属性 的对象。然后创建这样的东西

@ConfigurationProperties("foo")
public class CarProperties {

    private Map<String,Car> cars;

    // Getters/Setters
}

在您的主要配置中添加添加 @EnableConfigurationProperties(CarProperties.class) class。

然后您可以按如下方式注入该配置:

foo.cars.Fiat.model=pet
foo.cars.Fiat.year=1996
foo.cars.Honda.model=dis
foo.cars.Honda.year=2000

文档中有更多信息。

您也可以将 yaml 文件与 spring 一起使用:

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-yaml

这样,您可以使用

Fiat:
  model: pet
  year: 1996
Honda:
  model: dis
  year: 2000

我们也可以设置数据类型吗

#game properties
game.maxNumber = 100;
game.guessCount = 10;

这是我的 属性 文件,我需要 int 格式的值,但默认情况下,它给出的是字符串