Initializr을 활용하여 Spring을 시작하면 프로젝트 설정을 담당하는 application 파일이 application.properties로 생성된다. 하지만 이후 여러 강의를 듣거나 찾아보면 properties를 사용하지 않고 yml파일을 사용한다. 그렇다면 properties와 yml의 차이는 무엇이고 왜 요즘은 yml파일을 많이 사용하는지 알아보자.
먼저 application 설정 파일은 스프링 부트 애플리케이션의 속성을 설정하는 데 필요한 파일이다. 해당 파일을 사용하여 데이터베이스 연결 정보, 로깅 설정, 서버 포트, 보안 구성 등을 지정할 수 있다. 장고에서는 .env를 따로 만들어서 공개되면 안되는 정보들을 환경변수로 설정했는데 이와 달리 스프링에서는 기본 설정 파일이 자동으로 만들어져서 개인적으로 편했다.
이 같은 사항들을 따로 분리하는 가장 큰 이유는 아무래도 배포 시 다양한 환경에 따라 속성 값들이 달라질 수 있기에 편하게 설정을 변경하기 위해서이다.
application 설정 파일을 작성하는 방법은 대표적으로 두가지가 있다.
// DB Setting
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=username
spring.datasource.password=password
// File Upload Setting
spring.servlet.multipart.max-file-size=20MB
// MyBatis Setting
mybatis.mapper-locations=classpath:/mapper/Mapper.xml
mybatis.type-aliases-package=com.colabear754.blog_example_kt.domain
mybatis.configuration.jdbc-type-for-null=null
// Server Port
server.port=5555
// Server Port
spring:
datasource:
driver-class-name: oracle.jdbc.driver.OracleDriver
username: username
url: jdbc:oracle:thin:@localhost:1521:orcl
password: password
servlet:
multipart:
max-file-size: 20MB
mybatis:
mapper-locations: classpath:/mapper/Mapper.xml
configuration:
jdbc-type-for-null: 'null'
type-aliases-package: com.colabear754.blog_example_kt.domain
server:
port: '5555'
코드만 봐도 yml 파일이 properties 파일보다 간결한 것을 볼 수 있다. 또한 다양한 자료형을 제공하고 더 직관적이고 중복되는 코드를 줄여주는 yml파일을properties 보다 많이 사용하는 것 같다.
그러면 두 파일 모두 사용하면 어떻게 될까? 그 경우에는 properties 파일이 우선순위가 더 높아서 yml파일에서 설정한 파일이 덮어씌어진다고 한다.
프로젝트를 하거나 강의를 수강하다 보면은 properties 파일을 사용하는 경우도 있다. 이런 상황에서 나같은 경우는 아래에 있는 사이트에서 properties 파일을 yml 파일로 전환해서 사용한다.
https://mageddo.com/tools/yaml-converter
https://colabear754.tistory.com/90
https://velog.io/@lily_younk/application.yml-.properties-차이
둘 중 어느 것을 사용해도 동일하게 동작하는 건가요??