Как загрузить и перебрать файл свойств в Spring Boot - PullRequest
1 голос
/ 15 марта 2019

У меня есть properties файл, в котором значения разделены запятыми.Я могу получить значения как Object, как показано ниже.Может кто-нибудь сказать, пожалуйста, как разделить значения и получить его в строке.

.properties

key-1 = value1,value11
key-2 = value2,value22
key-3 = value3,value33
key-4 = value4,value44

Код

@PropertySource( value = "classpath:test1.properties", name = "test1" )

AbstractEnvironment ae = (AbstractEnvironment)env;
org.springframework.core.env.PropertySource test1Source = 
ae.getPropertySources().get("test1");
Properties propsTest1 = (Properties)test1Source.getSource();

   for(Object key : propsTest1.keySet()){
   System.out.println("Properties file======>   propsTest1.get(key));
  }

Ответы [ 3 ]

3 голосов
/ 15 марта 2019

Вы можете использовать аннотацию @Value с @PropertySource, чтобы получить значение свойства. Также вы можете использовать Spring Expression, чтобы разделить его на список, например:

@PropertySource( value = "classpath:test1.properties", name = "test1" )
public class PropertyClass {

    @Value("#{'${key-1}'.split(',')}") 
    private List<String> key1Values;
}

Это даст вам список всех значений, настроенных для key-1.

2 голосов
/ 15 марта 2019

Вы можете попробовать что-то вроде ниже.

Properties propsTest1 = (Properties)test1Source.getSource();

for(Map.Entry<Object, Object> e : propsTest1.entrySet()){

   String value = (String)e.getValue();
   String[] values = value.split(",");
   // If you have spaces as between values, you have to take care of it.
}
1 голос
/ 15 марта 2019

.properties

map.key[0] = value1,value11
map.key[1] = value2,value22
map.key[2] = value3,value33
map.key[3] = value4,value44

Код

@ConfigurationProperties(prefix="map")
public class YourConfig {

    private List<String> keys = new ArrayList<String>();

    public List<String> getKeys() {
        return this.servers;
    }
}

Или вы можете использовать:

keys={key-1:'value1',key-1:'value2',....}

Код

@Value("#{${keys}}")  private Map<String,String> keys;
...