Spring Core Configuration 사용해보기

2024. 4. 4. 03:23Spring Boot/Spring Core

반응형

들어가며

Spring Core Configuration은 프로젝트 설정을 담당하는 Spring 하위 프레임워크이다.

Configuration은 bean, dependency, AOP(aspect-oriented programming) 등의 설정을 담당한다.

설정 방법 또한 Java 코드, XML 파일, 어노테이션 방식 등을 지원한다.

Configuration 은 환경마다 달라야 한다

필수적인 문장이다. 설정마다 환경이 다르지 않다면 각 환경에 따른 동작을 하드코딩으로 분기하여 구현해야 하기 때문이다.

Spring Core는 이에 몇가지 방법을 제시하고 있고, 가장 일반적인 방법은 properties(또는 yaml) 파일을 이용하는 것이다.

본 포스팅에서는 yaml을 사용할 것이다.

.yaml 파일 분리하기

Dev, Staging, Production 환경으로 분리된 어플리케이션을 상정하고 src/main/resources에 3개의 yml 파일을 생성한다.

  • application-dev.yaml
  • application-staging.yaml
  • application-production.yaml

구동을 테스트하기 위해 각 yaml에 읽어올 test 값을 적용해준다.

# application-dev.yaml
test: "dev property"

Spring Application 에서 실행할 환경 설정하기

Spring에서는 application.yaml 에 ‘-’ 로 구분된 환경을 자동으로 읽어오는 설정을 가지고 있다.

TestConfiguration 클래스를 작성한다.

@Configuration
@PropertySource("classpath:application-dev.yaml")
public class TestConfiguration {
    @Value("${test}")
    private String test;

    @Bean
    public String testBean() {
        System.out.println(test);
        return test;
    }
}

실행하면 application-dev.yaml 의 값을 출력한다.

@PropertySource를 application-staging.yaml로 변경하면 staging 환경의 변수를 출력한다.

@PropertySource("classpath:application-staging.yaml")

Naming Convention

환경 분리를 넘어 환경에 따른 각 도메인별 또는 기능별 설정까지 분리하고 싶을 수 있다.

연결 DB 환경변수를 예로 들어보면,

  • application-dev_h2.yaml
  • application-staging_mysql.yaml
  • appication-production_aws.yaml

위와 같이 ‘_’ 형태의 접미사를 붙여 구분할 수 있다.

Resources

반응형