다시 웹, 백엔드로/스프링

YAML / @Profile

EnoughTT 2023. 11. 21. 16:53

YAML

 

YAML (YAML Ain't Markup Language)

사람이 읽기 좋은 데이터 구조를 목표로 함 확장자는 yaml, yml

 

 

application.properties 예시

environments.dev.url=https://dev.example.com
environments.dev.name=Developer Setup
environments.prod.url=https://another.example.com
environments.prod.name=My Cool App

 

application.yml 예시

environments:
    dev:
        url: "https://dev.example.com" 
        name: "Developer Setup"
    prod:
        url: "https://another.example.com" 
        name: "My Cool App"

 

  • YAML의 큰 특징은 사람이 읽기 좋은 계층 구조임
  • 공백으로 계층 구조를 만듦, 보통 2칸을 사용
  • 구분 기호 ' : ' 를 사용 (key: value: 값)

 

application.properties ➡️ application.properties 로 변경

application.yml 생성

 

  • properties 와 yml을 같이 사용하게 될 경우 properties가 우선권을 가짐 (실무에서는 yml 파일 선호)

 

 

yml과 프로필

  • --- 은 논리 파일을 구분
  • spring.config.active.on-profile: 프로필 적용

 

 

@Profile

각 환경마다 설정값을 다른 빈을 등록 할 수 있음

 

 

로컬 개발 환경에서는 실제 결제를 안함

 

 

 

운영 환경에서는 실제 결제를 시도

 

 

 

PayClient 를 사용하는 부분, 상황에 따라 LacalPayClient 나 ProdPayClient를 주입받음

 

 

 

@Profile 어노테이션은 프로필이 활성화된 경우에만 빈을 등록함

 

 

 

ApplicationRunner 인터페이스를 사용하면 스프링은 빈 초기화가 모두 끝나고 애플리케이션 로딩이 완료되는 시점에 run(args) 메서드를 호출해줌

 

 

hello.pay 패키지 추가

 

 

 

프로필 없이 실행하면 default 프로필이 사용됨

 

 

 

prod 프로필 적용

 

 

@Profile 어노테이션

특정 조건에 다라서 해당 빈을 등록할지 말지 선택함, 등록되는 스프링 빈도 분리할 수 있음

 

 

 

 

 

 

 

 

 

 

 

feat. 스프링부트 - 핵심 원리와 활용 (김영한)