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

时间:2015-04-24 14:51:31

标签: java spring apache spring-boot

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

我尝试了下面的实现: -

属性文件: -

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

我在下面的课程中尝试阅读属性文件。

@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中使用嵌套属性文件?

2 个答案:

答案 0 :(得分:3)

创建Car对象或具有modelyear属性的对象。然后创建像这样的东西

@ConfigurationProperties("foo")
public class CarProperties {

    private Map<String,Car> cars;

    // Getters/Setters
}

在主配置类中添加@EnableConfigurationProperties(CarProperties.class)

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

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

文档中有更多信息。

答案 1 :(得分:3)

您也可以将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