Spring Boot
yml 파일 설정 및 이해
영카이브
2024. 3. 23. 09:37
yml 파일이란?
일종의 구성 파일이며, 스프링 애플리케이션에서 사용되는 다양한 구성 요소들을 정의한다. 이 파일을 참고하여 스프링 서버가 실행될 때 스프링 프레임워크의 여러 기능과 설정이 적용된다.
이 설정 파일은 스프링 애플리케이션의 다양한 부분을 정의할 수 있다. 예를 들어, 데이터베이스 연결 정보, 빈(Bean)의 정의, 서비스 구성, 보안 설정 등이 있다. yml 파일을 통해 이러한 설정들을 구조화하고 명시함으로써 스프링 애플리케이션이 예상대로 동작하도록 한다.
스프링 서버가 실행될 때는 이 yml 파일에 정의된 설정들을 읽어들여 해당 설정에 맞게 스프링 컨테이너를 초기화하고 빈을 등록한다. 따라서 yml파일에 적절한 설정을 정확하게 작성하는 것이 중요하다. 이를 통해 스프링 애플리케이션이 정상적으로 작동하고 필요한 기능들이 올바르게 구성될 수 있다.
yml 파일이 properties 파일보다 선호되는 이유
- 가독성 : 한 눈에 보기에 가독성이 좋음, 계층 구조라서 이해하기 쉬
- 간결성 : properties파일보다 간결하게 표현하고 반복된 코드를 피할 수 잇음
- 유연성: yml 파일은 다양한 데이터 유형을 지원하므로 다양한 종류의 설정이나 구성을 표현, 배열이나 객체와 같은 복잡한 데이터 구조도 쉽게 표현
기술자가 음료 공장을 만든다고 가정해 보겠다.
이때, YAML 파일은 스프링 프레임워크를 사용하여 음료 공장을 구축하기 위한 설정 파일이다.
server:
port: 8080 //클라이언트의 요청을 받아들이는 포트를 지정
servlet:
context-path: / //클라이언트가 해당 서비스에 접근할 때 사용할 경로를 정의
encoding:
charset: utf-8 //클라이언트가 서비스에 요청하는 데이터의 인코딩 방식을 지정
enabled: true
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp //파일 확장자(suffix)는 ".jsp"로 설정
datasource:
driver-class-name: org.mariadb.jdbc.Driver
url: jdbc:mariadb://localhost:3307/photogram
username: username
password: password
jpa:
open-in-view: true
hibernate:
ddl-auto: update
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
show-sql: true
servlet:
multipart:
enabled: true
max-file-size: 2MB //이는 클라이언트가 서비스에 요청할 때 전송할 수 있는 데이터의 크기를 제한
// "security"를 적용하여 인증과 권한 부여를 통해 접근 제어를 설정
# security:
# user:
# name: name
# password: password
- 두번째 공장 >>> context-path: /
- 스프링 애플리케이션에서는 여러 개의 서비스를 운영할 수 있으며, 각 서비스는 고유한 경로를 갖는다. 이를 통해 클라이언트는 서로 다른 서비스에 접근할 수 있다. "context-path: /" 설정은 이러한 경로를 설정하는 것이다.
- 공장 입구는 서쪽 >>> port: 8080
- 음료 요청은 전부 한글 문서로 변경해서 받음 >>> encoding:
charset: utf-8 - 음료는 전부 콜라로 만들어서 출시 >>> suffix: .jsp
- 음료 창고는 컨테이너 박스를 사용 >>> 컨테이너박스 : Maria DB
- 음료는 요청에 따라 패트병, 캔, 병으로 출시 >>> JPA를 사용하면 데이터베이스의 종류에 관계없이 객체 지향적으로 데이터를 관리
- 공장이 재가동 될때 기존에 만들어졌던 음료는 버리지 않음 >>> ddl-auto: update
- 음료 요청시 A4용지 2장 이상의 문서는 받지 않음 >>> max-file-size: 2MB
- 음료 요청은 아무나 할 수 없다. 암호를 아는 사람만 요청 >>> security 적용