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 에서 사용할 수 있습니다 .

Generic footer banner