Spring Profile 활용 Application.properties
Spring 프로젝트에서 application.properties 파일은 어떤 용도로 사용하는가?
스프링 부트 프로젝트를 이클립스나 인텔리J 에서 세팅하고 나면 src/main/resources/ 아래 applcation.properties 파일이 생성된다.
구글에 "스프링 부트 톰캣포트 변경" 이렇게 검색을 해보면 applcation.properties에 server.port = [변경할 포트] 하라는 정보를 흔히 볼 수 있다.
스프링에서 기본적으로 제공하는 여러 옵션들을 지정할 수 있다.
프로파일 그룹이나 파일을 여러개 정의해서 서버 실행 시 입력된 환경변수에 따라 개발자 개인(local), 개발(dev), 운영(prod) 이런 식으로 외부에서 주입받는 값으로 다이나믹하게 사용할 수 있다.
간단한 예제와 Profile 값을 주입받아서 사용하는 예제를 만들어본다.
실습해보자
준비물 : 이클립스, 자바 1.8, 스프링 부트 (Lombok 없어도 됨 습관적으로 추가함 , Spring Web)
첫번째 예제)
우선 Spring Profiile의 간단한 사용법을 알아보자.
application.properties 파일 안에 app.title 변수를 만들고 하드 코딩해서 값을 넣어보고 그 값을 읽어보자.
간단한 컨트롤러를 하나 만들고 @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
컨트롤러는 그대로 재활용 한다.
이클립스 실행 Run 옵션을 준다.
어떻게 활용할지 감이 오지 않는가?
마무리
서버 실행 시 Profile 변수를 옵션으로 받아 현재 실행되어야 하는 환경을 주입받고, 주입받은 환경 Profile 값에 따라 프로그램 로직을 다이나믹하게 처리할 수 있다.
데이터베이스는 운영, 통합 테스트, 개발 등 환경마다 서버 주소가 일반적으로 다르다. 이럴 때 서버 별로 접속 정보를 구분하고 연결할 수 있다.
또 예를 들면, 배치 프로그램은 굳이 개발환경에서 스케줄을 돌리지 않아도 될 것이다. 이럴 때 batch.useflag=N 이런 식으로 환경마다 세팅을 해서 사용할 수 있다.
예제 소스는 아래 첨부한다.
글이 도움이 되셨거나 유용하다면 공감 클릭 부탁합니다.
'슬기로운 자바 개발자 생활 > 스프링 및 자바웹 서비스' 카테고리의 다른 글
스프링부트에서 jsp사용하기 (1) | 2022.12.17 |
---|---|
스프링부트 구글로그인 API 구현 OAuth 2.0 - 1. 구글 설정 하기 (2) | 2022.12.17 |
GRPC 자바 세번째 서버와 클라이언트 만들기 (0) | 2022.12.05 |
GRPC 자바 두번째 코드생성 (0) | 2022.12.05 |
GRPC 자바 첫번째 알아보기 (0) | 2022.12.05 |
댓글