Backend/Spring

[Spring Boot] 공부하면서 정리해가는 yml 설정

JOYERIM 2022. 12. 22. 12:57

앞으로 Spring Boot 공부하면서 계속 추가할 예정입니다.

▪ MySQL

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/{database}?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
    username: {이름}
    password: {비밀번호}

 

 JPA

spring:
  jpa:
    defer-datasource-initialization: true
    show-sql: true
    hibernate:
      ddl-auto: create
      generate-ddl: true

- defer-datasource-initialization

Hibernate 초기화 이전에 SQL 스크립트를 실행할지를 설정할 수 있다.

즉, true로 설정하면 Hibernate 초기화 전에 쿼리가 실행되면서 데이터를 생성할 수 있다.

 

- show-sql

Hibernate가 DB에 수행하는 모든 쿼리문을 콘솔에 출력한다.

 

- ddl-auto

개발 초기에는 create 또는 update 옵션을 사용하지만

실제 서비스 배포 시에는 절대로 create, create-drop, update 옵션을 사용하면 안된다.

테스트 서버는 update 또는 validate를 이용하고 스테이징과 운영 서버는 validate 또는 none을 사용한다.

즉, 스테이징과 운영 서버에서는 테이블 생성 및 컬럼 추가, 삭제, 변경은 데이터베이스에서 직접하며, none을 사용하거나 validate를 이용해 정상적인 매핑 관계만 확인해야 한다.

 

- generate-ddl

spring.jpa.hibernate.ddl-auto 속성을 사용할지 말지를 결정하는 옵션이다.

jpa는 데이터베이스 스키마를 자동으로 생성하는 기능을 지원한다.

기본값이 false이기 때문에 JPA에 의한 자동 생성 기능을 사용하려면 true로 바꾸고 사용한다.

none 자동 생성 기능을 사용하지 않는다.
(대부분의 DB에서 기본값)
create 기존 테이블을 삭제하고 새로 생성한다.
create-drop 기존 테이블 삭제 후 테이블 생성, 종료 시점에 테이블 삭제
update 데이터베이스 테이블과 엔티티 매핑 정보를 비교해서 변경 사항만 수정한다.
validate 데이터베이스 테이블과 엔티티 매핑 정보를 비교해서 차이가 있으면 경고를 남기고 애플리케이션을 실행하지 않는다. 이 설정은 DDL을 수정하지 않는다.
→ 엔티티와 테이블 정상 매핑 확인

 

 Spring Security

spring:
  security:
    user:
      name: {이름}
      password: {비밀번호}
      roles: {권한}

 

 Mustache

만약 동작하지 않고 403 에러가 발생한다면 아래의 설정을 추가하자.

spring:
  mustache:
    servlet:
      expose-session-attributes: true

 

한글깨짐현상 해결 방법

server.servlet.encoding.force-response: true