Spring Boot 애플리케이션의 구성 관리

3285 단어
업계 전반에 걸쳐 Spring Boot 애플리케이션에서 구성 작업을 수행하는 다양한 방법을 찾을 수 있지만
합리적으로 유연하고 유지 관리 가능한 솔루션을 제공하는 가장 일반적인 간단한 방법이 있습니다. 가능한 모든 옵션을 너무 깊이 탐색하지 않고 짧고 빠르게 읽을 수 있도록 아래에 간략하게 설명하겠습니다.

1. @Value를 사용하여 구성 요소에 환경 변수 삽입



구성은 Spring 구성 요소에 의해 주입되지만 @Value로 주석을 달아야 합니다.

@Component
class MyComponent {

    @Value("${myappname.weatherapi.url}")
    private weatherApiUrl

    // ...
}

또한 myappname.weatherapi.urlapplication.properties(또는 application.yaml)에서 정의되어야 합니다.

myappname.weatherapi.url=http://weather.com/api

1.1 테스트에서 재정의



테스트에서 쉽게 재정의할 수 있습니다.
테스트 내에서 이 @Value를 다시 지정하여:

@SpringBootTest(properties = {
    "myappname.weatherapi.url=http://localhost:8888"
})
class MyComponentTest {

    @Autowired
    private MyComponent myComponent;

    // ..
}

2. application.properties에 환경 변수 삽입



환경에 정의된 변수가 있는 경우

export WEATHER_URL=http://wiremock:8000

Spring Boot 애플리케이션을 실행할 때,
다음 구문을 사용하여 application.properties에 주입할 수 있습니다.

server.port=${PORT:8020}
myappname.wetherapi.url=${WEATHER_URL:http://localhost:8888}

이제 Spring Boot 애플리케이션을 실행할 때
환경에 PORT 및 WEATHER_APPLICATION이 설정되어 있으면
그러면 환경 변수가 사용됩니다.

하지만 애플리케이션을 실행하는 환경에 그것들이 없다면,
그런 다음 기본값(8020 및 localhost)으로 돌아갑니다.

3. application.properties 파일의 대체 위치



기본적으로 application.properties가 사용됩니다. 그러나 Spring Boot 프로파일이 설정되면 다음 패턴의 파일 이름을 사용합니다: application-{profilename}.properties .

다른 프로필로 Spring Boot 앱을 실행하려면 다음과 같이 "-D"매개변수를 전달해야 합니다.

java -jar -Dspring-boot.profile=local my-spring-boot-app.jar

이것은 application-local.properties 를 사용합니다.

3.1 테스트용으로만 재정의



테스트 클래스에서 파일aplication-test.properties을 사용하려면 다음을 사용하십시오.

@SpringBootTest
@ActiveProfiles("test")
class MyComponentTest {
// ...
}

애플리케이션 우회(나쁜 관행)



구성 요소는 SystemProperties 클래스를 사용하여 환경 변수에 직접 액세스할 수 있습니다.
이렇게 하면 application.properties 에 아무 것도 포함할 필요가 없습니다.

그러나 가장 좋은 방법은 속성 파일을 사용하는 것입니다.
이렇게 하면 이 서비스에 대해 어떤 매개변수를 조정할 수 있는지 명확해집니다. 그리고 속성 파일이 환경 변수를 주입한다는 점을 감안할 때 애플리케이션은 진정으로 이식 가능합니다.
Java 코드는 값이 어떻게 주입되는지 신경쓰지 않기 때문입니다. 따라서 이를 통해 필요한 경우 Spring에서 마이그레이션하거나 환경 사용에서 마이그레이션할 수도 있습니다.

5. 12개의 팩터 앱 방법론 준수



여러 속성 파일을 사용하는 것은 언급할 가치가 있습니다.
각 배포 환경에 대해 유혹적으로 보일 수 있지만 반드시 최선의 아이디어는 아닐 수 있습니다. 추론은
12 Factor 방법론에 매우 명확하게 정의되어 있습니다. 이렇게 하면 애플리케이션이 플랫폼에 구애받지 않고 코드를 변경하지 않고도 다양한 환경(컨테이너 포함)에 쉽게 배포할 수 있습니다.

Spring Boot 애플리케이션에서 구성을 관리하는 방법은 수천 가지가 있지만 알아야 할 것은
다음의 간단한 5단계를 따라 애플리케이션이
유연하고 확장 가능하며 클라우드를 지원합니다.

좋은 웹페이지 즐겨찾기