2024. 4. 4. 03:23ㆍSpring 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
'Spring Boot > Spring Core' 카테고리의 다른 글
Spring Annotation 사용해보기 (0) | 2024.04.14 |
---|---|
Spring MVC 사용해보기 (0) | 2024.04.12 |
Spring의 관점 지향 프로그래밍(Aspect-Oriented Programming) (1) | 2024.04.12 |
Spring의 제어 역전(Inversion of Control) (0) | 2024.04.04 |
Spring의 의존성 주입(Dependency Injection) (1) | 2024.04.04 |