Класс Spring Environment - загрузка значения свойства с помощью динамического ключа - PullRequest
0 голосов
/ 23 января 2019

Есть ли какие-либо ограничения в классе Environment для динамической загрузки свойств?

@Autowired
private Environment environment;

environment.getProperty("spring.data".concat(dynamickey);

У меня есть 2 зависимых проекта. Оба проекта имеют applicationcontext.xml с указанием пути к классу для чтения файлов свойств, основанных на среде, такой как dev, uat, live ... и т. Д.

В обоих проектах в одном из классов я инициализировал Environment класс для чтения свойств. К сожалению, в обоих местах класс среды загружал одни и те же свойства. При отладке я вижу одинаковые свойства в обоих местах.

Мое требование - загружать свойства по-разному в обоих местах.

Может кто-нибудь помочь мне решить проблему?

Дополнительная информация по вышеуказанному запросу:

У меня есть 2 проекта

Project A:
  src
     java
        ---- Test1.java
     resources
        ----dev.properties
        ----uat.properties
        ----live.properties
        ----applicationcontext.xml -- contains bean with classpath

Project B:
  src
     java
        ---- Test2.java
     resources
        ----dev.properties
        ----uat.properties
        ----live.properties
        ----applicationcontext.xml -- contains bean with classpath

Test1.java содержит

class Test1{
   @Autowired
   private Environment environment;

  public void abc(String val){
    String aaa=environment.getProperty("address.".concat(val));
  }

}

Test2.java содержит

class Test2{
   @Autowired
   private Environment environment;

  public void abc(String val){
    String bbb=environment.getProperty("address.".concat(val));
  }

}

когда я отлаживаю Test2.java, среда имеет свойства проекта A вместо свойств проекта B.

Есть ли способ загрузить свойства проекта A в объект среды Test1.java и свойства проекта B в объект среды Test2.java.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Потратив много времени, мы узнали, что Environment загружает свойства из обоих проектов.

Если ключи в свойствах различны, то проблем не будет, если ключи в файлах свойств совпадают, то они получат свойства из первого загруженного файла свойств.

0 голосов
/ 23 января 2019

Вы можете использовать профили весной, и есть несколько способов сделать это:

1.Используйте профиль на основе свойств:

Создайте несколько файлов свойств (application-dev.properties, application-prod.properties, с application.properties, который служит профилем по умолчанию), затем запустите приложение с -Dspring.profiles.active = dev, например.

2.Используйте профили на основе Yaml (application.yml):

enter image description here

Есть еще варианты, чтобы сделать то же самое

Примечание : Я не смог правильно отформатировать код yaml в своем ответе, поэтому я прикрепил картинку

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