是否有可能从Spring的application.properties中获取一组对象?

时间:2017-12-11 12:33:04

标签: java spring

我知道我可以从properties文件行属性创建对象。 我想获得一个动态的对象数组,就像这样。

application.properties

heroes.hero1=1,superman,kent
heroes.hero2=2,batman,wayne

假设有人会在文件中添加另一个英雄。春天是否有可能自动理解英雄阵列的附加物?这个问题有方法解决吗?或者从txt文件中读取和构造此类对象更容易。

3 个答案:

答案 0 :(得分:2)

是的,你可以。使用以下代码注入这些属性:

@Value("${heroes.hero1}")
private String[] heroes1;

@Value("${heroes.hero2}")
private String[] heroes2;

答案 1 :(得分:2)

您实际上可以使用Spring Boot Core功能实现此功能:

创建一个新的Java类(现在使用Lombok for Getters / Setters)

@ConfigurationProperties(prefix = "heroes")
@Getter
@Setter
public class HeroesProperties {

    private Map<String, List<String>> heroesMapping;

}

在你的application.properties中,你可以动态添加更多英雄。

E.g。

  • heroes.hero1=1,superman,kent
  • heroes.hero2=2,xx,aa
  • heroes.hero3=3,yy,bb
  • heroes.heroN=4,zz,cc

答案 2 :(得分:1)

注入Environment并致电getProperty

import org.springframework.core.env.Environment;   

@Autowired
private Environment env;

public String[] getHero() {
   return env.getProperty("heroes",String[].class);
}