Я новичок в конфигурациях Apache Commons и хотел бы включить их в свой проект. У меня есть следующий код со страницы сообщества apache

@Configuration
static class Config {

  @Bean
  public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer(ConfigurableEnvironment env)
    throws ConfigurationException {
    PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
    MutablePropertySources sources = new MutablePropertySources();
    sources.addLast(new ConfigurationPropertySource("xml configuration", new Configurations().xml("aXmlConfigFile.xml")));
    configurer.setPropertySources(sources);
    configurer.setEnvironment(env);
    return configurer;
  }
}

Проблема в том, что если я сделаю envirnment.getProperty("some_key"), это будет пусто. Работает ли он только как @Value, но не при использовании Environment.

Также как я могу переопределить свойства во время выполнения и сохранить их в принадлежащих им файлах ...

1
Saurabh Kumar 14 Фев 2018 в 17:28

1 ответ

Лучший ответ

Для меня работает следующее:

@Configuration
public class PropertiesConfig {

    @Autowired
    private ConfigurableEnvironment env;

    @Autowired
    public void propertySourcesPlaceholderConfigurer(ConfigurableEnvironment env) throws ConfigurationException {
        ConfigurationPropertySource configurationPropertySource = new ConfigurationPropertySource("xml configuration",
                new Configurations().xml("config.xml"));
        env.getPropertySources().addLast(configurationPropertySource);
    }
}

Вот мой тест

@RunWith(SpringRunner.class)
@SpringBootTest
public class Test1 {

    @Autowired
    private Environment env;

    @Test
    public void test1() throws Exception {
        assertEquals("qa", env.getProperty("processing[@stage]"));
    }
}

Вот мой xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<configuration>
  <processing stage="qa">
    <paths>
      <path>/data/path1</path>
      <path>/data/otherpath</path>
      <path>/var/log</path>
    </paths>
  </processing>
</configuration>
0
Essex Boy 14 Фев 2018 в 19:12