Как найти путь к файлу (если существует) объекта PropertySource - PullRequest
0 голосов
/ 04 июня 2018
public MyObject(Environment env) {
    for(Iterator<PropertySource<?>> it = ((AbstractEnvironment) env).getPropertySources().iterator(); it.hasNext(); ) {
        PropertySource<?> source = it.next();
        if (source instanceof MapPropertySource && source.getSource() instanceof Properties {
            //add new property
            //get path to property file if exists and save some new properties/override existing.

Пожалуйста, рассмотрите код выше. Я хотел бы знать, может ли кто-нибудь предложить мне хороший чистый способ получения пути к файлу или потока объекта PropertySource.

В моем конкретном случае, в моей среде, естьдва объекта PropertySource, которые меня интересуют. Один - это файл, расположенный снаружи, другой - внутренний.Они определены в моем классе SpringBootApplication так: -

@SpringBootApplication
@PropertySources({ 
    @PropertySource(value = { "classpath:internal.properties" }),
    @PropertySource(value = { "file:${application.properties}" }) })
public class MyApplication extends SpringBootServletInitializer {...

У объекта PropertySource есть метод getName (), который выглядит так, чтобы содержать нужную мне информацию, но не по-дружески.

getName на PropertySource с путем к классу показывает: -

class path resource [internal.properties]

getName на PropertySource с путем к файлу показывает: -

URL [file:C:/Dev/conf/application.properties]

Информация в скобках практически пригодна для использования,Один файл является действительным URL, а путь к классу - нет.

Одно из решений - просто токенизировать эти строки и создать строку URL, поскольку у меня достаточно информации.Я могу сделать это и сделаю это, если не будет предложен лучший вариант.Поэтому мне было интересно, знает ли кто-нибудь какие-либо полезные служебные классы Spring или какой-либо другой лучший способ получения действительного URL / потока / пути к файлу из объекта PropertySource.

Заключительные замечания

  • Я не могу искать переменную среды вручную или любые пути.Это должно быть универсально и получено из объекта PropertySource.

Очень приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...