[SPRING] Spring에서 프로그래밍 방식으로 현재 활성 / 기본 환경 프로파일을 얻는 방법은 무엇입니까?
SPRINGSpring에서 프로그래밍 방식으로 현재 활성 / 기본 환경 프로파일을 얻는 방법은 무엇입니까?
다른 현재 환경 프로파일을 기반으로 다른 로직을 코딩해야합니다. Spring에서 현재 활성 프로필과 기본 프로필을 어떻게 얻을 수 있습니까?
해결법
-
==============================
1.환경을 자동화 할 수 있습니다.
환경을 자동화 할 수 있습니다.
@Autowired Environment env;
환경 제공 :
-
==============================
2.사용자 1648825의 좋은 간단한 대답을 확장 (나는 말할 수없고 나의 편집은 거절되었다) :
사용자 1648825의 좋은 간단한 대답을 확장 (나는 말할 수없고 나의 편집은 거절되었다) :
@Value("${spring.profiles.active}") private String activeProfile;
프로파일이 설정되어 있지 않으면 IllegalArgumentException이 throw 될 수 있습니다 (null 값을 얻음). 설정이 필요하다면 이것은 좋은 일일 수 있습니다. @Value에 'default'구문을 사용하지 않으면, 즉 :
@Value("${spring.profiles.active:Unknown}") private String activeProfile;
... spring.profiles.active를 확인할 수없는 경우 activeProfile에 '알 수 없음'이 포함됩니다.
-
==============================
3.여기에 더 완벽한 예제가 있습니다.
여기에 더 완벽한 예제가 있습니다.
자동 배선 환경
먼저 환경 bean을 autowire하고 싶을 것이다.
@Autowired private Environment environment;
프로필이 활성 프로필에 있는지 확인
그런 다음 getActiveProfiles ()를 사용하여 활성 프로파일 목록에 프로파일이 있는지 알아볼 수 있습니다. 다음은 getActiveProfiles ()에서 String []을 가져 와서 해당 배열에서 스트림을 가져온 다음 matcher를 사용하여 존재하는 경우 부울을 반환하는 여러 프로필 (대소 문자 구분 없음)을 확인하는 예제입니다.
//Check if Active profiles contains "local" or "test" if(Arrays.stream(environment.getActiveProfiles()).anyMatch( env -> (env.equalsIgnoreCase("test") || env.equalsIgnoreCase("local")) )) { doSomethingForLocalOrTest(); } //Check if Active profiles contains "prod" else if(Arrays.stream(environment.getActiveProfiles()).anyMatch( env -> (env.equalsIgnoreCase("prod")) )) { doSomethingForProd(); }
비슷한 기능을 구현하기 위해 주석 @Profile ( "local")을 사용할 수도 있습니다.이 기술에 대한 자세한 정보는 다음과 같습니다. 스프링 프로파일
-
==============================
4.
@Value("${spring.profiles.active}") private String activeProfile;
작동하며 EnvironmentAware를 구현할 필요가 없습니다. 그러나 나는이 접근법의 단점을 모른다.
-
==============================
5.자동 와이어 링을 사용하지 않는다면 단순히 EnvironmentAware를 구현하십시오.
자동 와이어 링을 사용하지 않는다면 단순히 EnvironmentAware를 구현하십시오.
from https://stackoverflow.com/questions/9267799/how-do-you-get-current-active-default-environment-profile-programmatically-in-sp by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 제네릭 매개 변수를 사용하는 제네릭 메서드에서 Spring RestTemplate 사용 (0) | 2018.12.30 |
---|---|
[SPRING] 스프링 부트없는 스프링 부트 액츄에이터 (0) | 2018.12.30 |
[SPRING] 봄에 AOP 로깅? (0) | 2018.12.30 |
[SPRING] 스프링 부트에서 빈을 프로그래밍 방식으로 만드는 방법은 무엇입니까? (0) | 2018.12.30 |
[SPRING] org.hibernate.HibernateException : 현재 스레드에 대한 세션을 찾지 못했습니다. (0) | 2018.12.30 |