개발노트

6. [Spring Boot] application.yml 설정하기 본문

서버 개발/Spring Boot

6. [Spring Boot] application.yml 설정하기

mroh1226 2024. 4. 29. 13:32
반응형

application.yml 적용순서

  1. 프로젝트 구조 확인: 먼저 Spring Boot 프로젝트의 구조를 확인하세요. src/main/resources 디렉터리 내에 application.yml 파일을 위치시켜야 합니다.
  2. 애플리케이션 실행 시 로드: Spring Boot 애플리케이션을 실행할 때 application.yml 파일이 자동으로 로드됩니다. 이 파일에 정의된 설정은 애플리케이션에 적용됩니다.
  3. 프로파일 설정: application.yml 파일은 여러 프로파일에 따라 설정을 구성할 수 있습니다. 예를 들어, application-dev.yml 또는 **application-prod.yml**과 같이 환경에 따라 다른 설정을 제공할 수 있습니다. 애플리케이션 실행 시 프로파일을 지정하여 해당 프로파일에 따른 설정을 로드할 수 있습니다.

application.yml 파일 생성 경로(src/main/resources)


application.yml,  application.properties 비교 (동일한 작업을 수행함)

좌측 yml / 우측 properties

 

application.yml
server:
  port: 8080
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/homebar_db?serverTimezone=Asia/Seoul
    username: root
    password: 9999

jpa:
  hibernate:
    ddl-auto: update
  properties:
    hibernate:
      show_sql: true
      format_sql: true
  1. server.port: 8080:
    • 애플리케이션의 내장 웹 서버인 Tomcat의 포트를 8080으로 설정합니다. 이는 애플리케이션이 기본적으로 8080 포트에서 실행될 것을 의미합니다.
  2. spring.datasource.driver-class-name: com.mysql.cj.jdbc.Driver:
    • 사용할 데이터베이스 드라이버 클래스를 지정합니다. 여기서는 MySQL 데이터베이스를 사용할 것이며, 그에 따른 JDBC 드라이버를 설정합니다.
  3. spring.datasource.url: jdbc:mysql://localhost:3306/homebar_db?serverTimezone=Asia/Seoul:
    • 데이터베이스 연결을 위한 JDBC URL을 설정합니다. **jdbc:mysql://localhost:3306/homebar_db**는 **localhost**의 3306 포트에 위치한 homebar_db 데이터베이스에 연결하겠다는 의미입니다. **serverTimezone=Asia/Seoul**은 MySQL 서버의 시간대를 서울로 설정합니다.
  4. spring.datasource.username: root:
    • 데이터베이스에 연결할 때 사용할 사용자 이름을 지정합니다. 여기서는 **root**를 사용합니다.
  5. spring.datasource.password: 9999:
    • 데이터베이스에 연결할 때 사용할 비밀번호를 지정합니다. 여기서는 **9999**를 사용합니다.
  6. jpa.hibernate.ddl-auto: update:
    • Hibernate의 DDL 자동 생성 기능을 설정합니다. **update**로 설정하면 애플리케이션을 시작할 때 Hibernate가 기존 데이터베이스 스키마와 엔티티 클래스의 정보를 비교하여 필요한 변경을 자동으로 수행합니다.
  7. jpa.properties.hibernate.show_sql: true:
    • Hibernate가 실행한 SQL 쿼리를 콘솔에 출력하도록 설정합니다. 개발 및 디버깅 목적으로 유용합니다.
  8. jpa.properties.hibernate.format_sql: true:
    • 출력된 SQL 쿼리를 포맷팅하여 읽기 쉽게 표시하도록 설정합니다. 쿼리 디버깅 시 도움이 됩니다.
application.properties
spring.application.name=api-server

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#DB url-> mysql://[DB URL]:[port]/[DB Name]?serverTimezone=UTC
spring.datasource.url=jdbc:mysql://localhost:3306/homebar_db?serverTimezone=Asia/Seoul
spring.datasource.username=root
spring.datasource.password=9999

spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect

*yml 과 동일


yml(YAML)을 사용하는 이유

  1. 가독성: YAML 파일은 들여쓰기를 사용하여 계층적인 구조를 표현하기 때문에 가독성이 좋습니다. 프로퍼티들이 계층적으로 표현되므로 복잡한 설정도 이해하기 쉽습니다.
  2. 구조적 유연성: YAML은 리스트나 맵 등의 데이터 구조를 쉽게 표현할 수 있습니다. 이러한 구조적 유연성은 복잡한 설정을 다룰 때 유용합니다. 예를 들어, 프로파일에 따라 다른 설정을 구성할 수 있고, 리스트나 객체 형태의 데이터를 보다 직관적으로 표현할 수 있습니다.
  3. 프로퍼티 값 지정: YAML은 값을 지정할 때 큰따옴표(")를 사용하지 않아도 되며, 여러 줄로 값을 나타낼 수 있습니다. 이는 설정을 보다 자연스럽게 표현할 수 있게 해줍니다.
  4. Spring Boot와의 통합: Spring Boot는 기본적으로 YAML 파일을 지원하며, application.yml 파일을 사용할 경우 자동으로 로드합니다. 따라서 별도의 설정 없이도 application.yml 파일을 사용할 수 있습니다.
  5. 프로퍼티의 우선순위: YAML 파일은 프로파일에 따라 다른 설정을 제공할 수 있고, 프로퍼티 값의 우선순위를 설정할 수 있습니다. 이를 통해 각 환경에 맞는 설정을 간편하게 관리할 수 있습니다.
  6. 표현의 다양성: YAML은 다양한 데이터 타입을 지원하므로, 문자열, 숫자, 리스트, 맵 등 다양한 형태의 데이터를 표현할 수 있습니다. 이는 설정 파일을 보다 풍부하게 표현할 수 있게 해줍니다.

이러한 이유로 많은 개발자들이 application.yml 파일을 선호하며, Spring Boot 애플리케이션에서 설정 파일을 작성할 때 YAML 형식을 사용하는 경우가 많습니다. 다만, 개발자의 취향과 프로젝트 요구 사항에 따라 application.properties 파일을 사용할 수도 있습니다.

반응형
Comments