본문 바로가기
슬기로운 자바 개발자 생활/스프링 및 자바웹 서비스

Spring Profile 활용 Application.properties

by 슬기로운 동네 형 2022. 12. 15.
반응형

Spring Profile 활용 Application.properties


Spring 프로젝트에서 application.properties 파일은 어떤 용도로 사용하는가?

 스프링 부트 프로젝트를 이클립스나 인텔리J 에서 세팅하고 나면 src/main/resources/ 아래 applcation.properties 파일이 생성된다.

 구글에 "스프링 부트 톰캣포트 변경" 이렇게 검색을 해보면  applcation.properties에 server.port = [변경할 포트] 하라는 정보를 흔히 볼 수 있다.

 

 스프링에서 기본적으로 제공하는 여러 옵션들을 지정할 수 있다.

 

 프로파일 그룹이나 파일을 여러개 정의해서 서버 실행 시 입력된 환경변수에 따라 개발자 개인(local), 개발(dev), 운영(prod) 이런 식으로 외부에서 주입받는 값으로 다이나믹하게 사용할 수 있다.


 간단한 예제와 Profile 값을 주입받아서 사용하는 예제를 만들어본다.

키워드를 입력하고 Ctrl + 스페이스 를 누르면 친절히 설명이 나온다.


실습해보자

준비물 : 이클립스, 자바 1.8, 스프링 부트 (Lombok 없어도 됨 습관적으로 추가함 , Spring Web)


첫번째 예제)

우선 Spring Profiile의 간단한 사용법을 알아보자.

application.properties 파일 안에  app.title 변수를 만들고 하드 코딩해서 값을 넣어보고 그 값을 읽어보자.

application.properties

 

 

간단한 컨트롤러를 하나 만들고 @Value("${app.title}") 어노테이션을 사용해서 값을 변수에 대입한다.

package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    @Value("${app.title}")
    private String appTitle;
	
	@RequestMapping("/profile")
	public String profile() {
		return appTitle;
	}
}

서버를 실행해서 http://localhost:8080/profile 을 호출해보면 application.properties에 설정한 값 app.title에 할당한 값이 조회가 되는 것을 볼 수 있다.

실행 결과


두 번째 예제)

application-local.properties, application-dev.properties , application-prod.properties 세 개의 파일을 만들고 app.title 변수의 값을 제 각각 주자. Profile에 local, dev, prod 등의 환경변수를 지정해 실행하자.

 

app.title=springboot Profile dev

app.title=springboot Profile local

app.title=springboot Profile prod

 

컨트롤러는 그대로 재활용 한다.

 

파일을 세개로 나눈다. apllocation-{Profile변수}.properties 가 된다.

이클립스 실행 Run  옵션을 준다.

Run - Run Configrations
Run Profile 옵션

어떻게 활용할지 감이 오지 않는가?

profile local이 실행


마무리

서버 실행 시 Profile 변수를 옵션으로 받아 현재 실행되어야 하는 환경을 주입받고, 주입받은 환경 Profile 값에 따라 프로그램 로직을 다이나믹하게 처리할 수 있다.

 

 데이터베이스는 운영, 통합 테스트, 개발 등 환경마다 서버 주소가 일반적으로 다르다. 이럴 때 서버 별로 접속 정보를 구분하고 연결할 수 있다.

 또 예를 들면, 배치 프로그램은 굳이 개발환경에서 스케줄을 돌리지 않아도 될 것이다. 이럴 때 batch.useflag=N 이런 식으로 환경마다 세팅을 해서 사용할 수 있다.

 

예제 소스는 아래 첨부한다.

profileDemo.zip
0.07MB

글이 도움이 되셨거나 유용하다면 공감 클릭 부탁합니다.

반응형

댓글