Intellij로 yml 파일 핸들링, 빌드, 로컬배포하기 (1탄 .yml 파일 핸들링 편)

Coen·2022년 10월 18일
2

build

목록 보기
1/2

인텔리제이로 빌드하고 Local로 배포하기!

  • 사용한 툴

    intellij, maven, gradle

  1. Springboot환경에서 테스트하기 위해 프로젝트를 생성했다.
  2. Dependency는 Spring Web, Lombok(생략 가능), Spring Boot DevTools(생략 가능)를 선택했다.
  3. Gradle이 설치되고 application.properties를 application.yml로 변경해준다. 이후 application-dev.yml application-staging.yml application-prod.yml도 만들어준다.
    - 보통 개발환경을 dev, 테스트서버 환경을 staging(운영서버와 같은 환경), 운영서버를 prod로 설정해서 사용한다.
  4. 각 yml 파일에 설정 값들을 넣는다.

Application.yml

spring:
  profiles:
    active: dev

logging: # 로그를 보기 위해서 추가
  level:
    root: info
    com.coen.yamltest: debug # 설정한 package는 debug level부터 logging

Application-dev.yml

server:
  port: 8080
values:
  message: dev
  arrays: dev0, dev1, dev2, dev3

Application-staging.yml

server:
  port: 8081
values:
  message: staging
  arrays: staging0, staging1, staging2, staging3

Application-prod.yml

server:
  port: 8082
values:
  message: prod
  arrays: prod0, prod1, prod2, prod3
  1. main method에서 사용할 수 있게 yml에서 값을 꺼내온다.
public class YamlTestApplication {

	@Value("${values.message}")
    String ymlMessage;
    @Value("${values.arrays}")
    String[] ymlArrays;
    @Value("${values.arrays}")
    String ymlArraysToString;
    
    public static void main(String[] args) {
        SpringApplication.run(YamlTestApplication.class, args);
    }
    
}
  • 두번째 ymlArrays는 배열로, 세번째 ymlArraysToString은 String으로 값을 받아올 수 있다.
    확인을 위해 클래스에 스프링에서 제공하는 리스너를 사용하여 값을 읽어보자.
@Slf4j
public class YamlTestApplication {
	
    @Value("....//생략
    
    public static void main(String[] args) {
    	......//생략
    }
    
    @Override
    public void onApplicationEvent(ApplicationReadyEvent event) {
        log.debug("==============================");
        log.debug("==============================");
        log.debug("ymlMessage={}", ymlMessage);
        log.debug("Arrays.toString(ymlArrays)={}", Arrays.toString(ymlArrays));
        log.debug("ymlArrays.getClass().isArray()={}", ymlArrays.getClass().isArray());
        log.debug("ymlArraysToString={}", ymlArraysToString);
        log.debug("ymlArraysToString.getClass().isArray()=[{}]", ymlArraysToString.getClass().isArray());
        log.debug("==============================");
        log.debug("==============================");
    }
}
  1. 스프링부트를 실행하고 어플리케이션이 준비가 되면 override된 onApplicationEvent가 동작하며 로그를 찍는다.

application.yml active가 dev로 되어있을때

application.yml active가 staging으로 되어있을때

application.yml active가 prod으로 되어있을때


application.yml 파일을 사용하여 다양한 설정을 할 수 있으며, 코드에서 숨기고 싶은 설정들을 캡슐화 할 수 있다. 또한 테스트환경과 운영환경을 나누어 설정을 할 수 있어 배포 시 귀찮음을 덜 수 있다.

profile
백엔드 프로그래머

0개의 댓글