1. 개요
이 예제에서는 Spring Boot의 application.properties 에서 환경 변수를 사용하는 방법을 설명합니다 . 그런 다음 코드에서 이러한 속성을 참조하는 방법을 보여줍니다.
2. application.properties 파일 에서 환경 변수 사용
"C:\Program Files\Java\jdk-11.0.14" 값으로 JAVA_HOME이라는 전역 환경 변수 를 정의해 보겠습니다 .
Spring Boot의 application.properties에서 이 변수를 사용하려면 중괄호로 묶어야 합니다.
java.home=${JAVA_HOME}
같은 방식으로 System 속성을 사용할 수도 있습니다. 예를 들어 Windows에서 OS 속성은 기본적으로 다음과 같이 정의됩니다.
environment.name=${OS}
여러 변수 값을 결합하는 것도 가능합니다. "Hello Baeldung" 값을 사용하여 다른 환경 변수 HELLO_BAELDUNG을 정의해 보겠습니다. 이제 두 변수를 연결할 수 있습니다.
baeldung.presentation=${HELLO_BAELDUNG}. Java is installed in the folder: ${JAVA_HOME}
baeldung.presentation 속성 에는 이제 다음 텍스트가 포함됩니다. “Hello Baeldung. Java는 C:\Program Files\Java\jdk-11.0.14" 폴더에 설치됩니다.
이처럼 우리의 속성은 환경에 따라 다른 값을 갖게 됩니다.
3. 코드에서 환경별 속성 사용
Spring 컨텍스트 를 시작 했다면 이제 속성 값을 코드에 주입하는 방법을 설명하겠습니다.
3.1. @Value 로 값 주입
먼저 @Value 어노테이션을 사용할 수 있습니다. @Value 는 setter, 생성자 및 필드 주입 을 처리합니다 .
@Value("${baeldung.presentation}")
private String baeldungPresentation;
3.2. 스프링 환경에서 가져오기
Spring의 Environment 를 통해 속성 값을 얻을 수도 있습니다 . 우리는 그것을 autowire 해야 합니다:
@Autowired
private Environment environment;
이제 getProperty 메서드 덕분에 속성 값을 검색할 수 있습니다.
environment.getProperty("baeldung.presentation")
3.3. @ConfigurationProperties가 있는 그룹 속성
@ConfigurationProperties 어노테이션은 속성을 함께 그룹화하려는 경우 매우 유용합니다 . 주어진 접두사가 있는 모든 속성을 수집 하는 구성 요소 를 정의합니다 (이 경우 baeldung ) . 그런 다음 각 속성에 대한 setter 를 정의할 수 있습니다 . setter의 이름은 속성 이름의 나머지 부분입니다. 우리의 경우에는 Presentation 이라는 단 하나의 것이 있습니다 .
@Component
@ConfigurationProperties(prefix = "baeldung")
public class BaeldungProperties {
private String presentation;
public String getPresentation() {
return presentation;
}
public void setPresentation(String presentation) {
this.presentation = presentation;
}
}
이제 BaeldungProperties 객체를 autowire할 수 있습니다.
@Autowired
private BaeldungProperties baeldungProperties;
마지막으로 특정 속성의 값을 얻으려면 해당 getter를 사용해야 합니다.
baeldungProperties.getPresentation()
4. 결론
이 글에서는 환경에 따라 다른 값으로 속성을 정의하고 코드에서 사용하는 방법을 배웠다.
항상 그렇듯이 코드는 GitHub 에서 사용할 수 있습니다 .