[Spring Boot] application.properties 간단 고찰

뽀삐용·2023년 9월 27일

Spring Boot

목록 보기
2/4

application.properties 란?
application.properties 파일은 런타임 시 다양한 환경에서 동작할 수 있도록 필요한 옵션들을 제공하는데 사용된다.
예를 들면 DB 설정, 로그 사용 여부 등에 대한 설정 가능하다.

직접 커스텀 옵션 값을 추가할 수도 있고, 스프링에서 사용하는 디폴트 옵션들을 바꿀 수 있다.


application.properties은 어떻게 사용될 수 있을까?
개발환경, 운영환경 등 다양한 환경에 따른 설정 옵션 적용이 가능하다.
서비스가 제공되기 전 여러 환경을 거쳐 개발 되고 테스트 되고 배포된다. 다양한 환경에 따른 설정 값을 프로퍼티 파일을 통해 코드 변경없이 바꿀 수 있다.

스프링 부트는 application.properties 파일을 디폴트로 사용하는데 일반적으로 서버를 운영할 때 application.properties는 3개의 파일로 구성된다.

  • properties 파일명 규칙 : application-[name].properties
  • springboot default properies file (profile이 없는 형태): application.properties

local : 내가 사용하는 작업 컴퓨터 환경
dev : 운영서버에 올라가기 전 테스트를 하기위한 서버 환경
prod : 실질적 사용자가 사용하는 운영 서버 환경


application.properties와 application.yml의 차이
Spring Boot 프로젝트에서는 일반적으로 프로젝트의 각종 설정을 application.properties 또는 application.yml 파일을 통해 하게된다.
기본적으로 Spring Initializr를 통해 Spring Boot 프로젝트를 생성하면 application.properties가 생성되지만, Spring Boot 설정을 위해 구글링을 하다 보면 application.yml에 대한 내용이 상당히 많이 나온다. 두 개의 차이는 무엇일까?

properties와 yml의 대표적인 차이는 내부 구조가 있다. properties의 경우엔 각 줄마다 key=value의 형태로 이루어져 있지만, yml의 경우엔 들여쓰기로 구분되는 계층 구조 및 key: value의 형태로 이루어져 있다는 점

결론적으로는 어떤 것을 사용해도 아무 문제가 없고, 기본적인 구조는 비슷하기 때문에 편한 것을 사용하면 되겠다. 주의할 점은 properties와 yml을 함께 사용하면 properties 파일이 우선순위가 높아 yml 파일에서 설정한 내용이 덮어씌워질 수 있다. 따라서 둘 중 한쪽만 사용하는 것이 권장된다.


application.properties 추가 설정 파일 사용해보기
이번에 kakao 로그인을 구현하면서 naver, google도 추가로 구현할 예정이여서 따로 모아두도록 구현해봤다.

[application-oauth.propertise]

## kakao ##
kakao.client.id=
kakao.redirect.uri=
kakao.client.secret=

.properties 설정 파일을 생성하여 작성한다.

[application.propertise]

# application-oauth.properties
spring.profiles.include=oauth

application.propertise 에서 새로 만든 properties 파일을 include 해주면 된다.

public class OAuthController {

    @Value("${kakao.client.id}")
    String clientId;
    @Value("${kakao.redirect.uri}")
    String redirectUri;
    @Value("${kakao.client.secret}")
    String clientSecret;
    
}

propertise에 저장된 값을 가져올 때는 (@Value) 어노테이션 활용해주면 쉽게 사용할 수 있다.

profile
하고 싶은 일 한 가지를 하려면

0개의 댓글