System.getproperty ("spring.profiles.active") всегда получает значение Null в JPA Entity Listeners - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь получить активный профиль Spring в JPA Entity Listener, используя System.getproperty("spring.profiles.active"). Но это всегда возвращает нулевой профиль. Однако я проверил на сервере и профиль правильно настроен.

Я пытался получить активный профиль Spring, используя Среду, но в слушателе я не могу @Autowired Среда также.

    @PostUpdate

    public void methodInvoked afterUpdate(Example example){

    String activeProfile = System.getproperty("spring.profiles.active");  

    }

Любое руководство, пожалуйста!

Ответы [ 2 ]

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

Вставьте среду в ваш код, а затем вызовите метод getActiveProfiles () для среды. Это возвращает массив строк всех активных профилей.

См

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/env/Environment.html#getActiveProfiles--

Не полагайтесь на «spring.profiles.active», так как это не может быть установлено - это свойство используется для установки значений через свойство, и его значение не отражает, какие профили активны, так как они могли быть устанавливается программно.

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

Вы должны использовать бин Environment при введении его, как описано в в этом ответе . SpringBeanAutowiringSupport будет работать, если вы создаете веб-приложение:

@Autowired
private Environment env;

@PostUpdate
public void methodInvoked afterUpdate(Example example) {
  SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
  String[] activeProfile = env.getActiveProfiles();

}
...