application.yaml에 다양한 설정들을 해주었는데
이 설정들이 무엇을 설정해 주는 것일까?
application.yml
spring:
datasource:
url: "jdbc:h2:mem://localhost/~/shopping;MVCC=TRUE"
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
defer-datasource-initialization: true
properties:
hibernate:
show_sql: true
format_sql: true
dialect: org.hibernate.dialect.H2Dialect
sql:
init:
mode: always
h2:
console:
enabled: true
path: /h2-console
logging.level:
org.hibernate.SQL: debug
org.springframework: debug
org.springframework.web: debug
server:
servlet:
encoding:
force: true
spring.datasource 설정
1. spring.datasource.url : H2DB에 연결하는 JDBC URL을 정의
(뒤에 MVCC=TRUE 옵션을 붙여주면 여러 개가 접근했을 때 좀 더 빨리 처리가 된다.)
2. spring.datasource.username : DB에 접속할 때 사용할 사용자 이름 지정
3. spring.datasource.password : DB에 접속할 비밀번호 설정
4. spring.datasource.driver-class-name : 사용할 JDBC 드라이버의 클래스 이름을 지정
spring.jpa 설정
1. spring.jpa.hibernate.ddl-auto : Hibernate가 DB 스키마를 생성하는 방법을 설정
2. spring.jpa.properties.hibernate.show_sql : Hibernate가 생성하는 SQL문을 보여줄지 여부 설정
3. spring.jpa.properties.hibernate.format_sql : SQL을 읽기 쉽게 포맷팅 하여 보여줄지 여부 설정
4. spring.jpa.properties.hibernate.dialect : 사용하는 DB의 Hibernate Dialect를 설정 (무슨 DB방식으로 SQL작성할까)
spring.sql 설정 ( 스프링 부트 애플리케이션에서 SQL 모드를 지정 )
1. spring.sql.init.mode : SQL 초기화 모드를 설정 (always는 실행할 때마다 DB 스키마나 테이블을 초기화하는 sql 실행)
spring.h2 설정
1. spring.h2.console.enabled : 내장된 H2DB 콘솔을 활성화할지 여부 설정 (web에서 볼 수 있게 할지)
2. spring.h2.console.path : H2DB 콘솔에 대한 URL 경로를 지정
spring.logging 설정 (애플리케이션 실행 중에 발생하는 이벤트나 정보를 기록)
1. spring.logging.level : 로깅 레벨을 설정한다. (해당 레벨에 따라 로그 출력이 달라진다.)
2. spring.logging.level.org.hibernate.SQL : Hibernate가 실행하는 SQL 쿼리 관련 로그 레벨을 지정
(하이버네이트의 SQL 로그를 debug모드로 사용한다. 하이버네이트가 생성하는 SQL이 로그에 다 출력한다.)
3. spring.logging.level.org.springframework : 스프링 프레임워크의 전반적인 로그 레벨을 지정
4. spring.logging.level.org.springframework.web : 웹 관련 로그에 대한 레벨을 지정
5. spring.logging.level.org.apache.coyote.http11= debug : HTTP 요청 메시지 log로 보기
(+ debug로 debug 정보를 로그에 남긴다.)
[show_sql: true]와 [org.hibernate.SQL: debug]의 차이점은
show_sql은 System.out으로 출력을 하고
org.hibernate.SQL: debug는 로그에 출력을 한다.
즉, 둘 중 하나만 사용하면 되는데 보통 후자를 선택한다.
server 설정
1. server.servlet.encoding.force : 서블릿의 인코딩을 강제로 지정 (웹 페이지에서 한글 깨짐 현상 해결)
+ Spring Boot에서 더미데이터 data.sql 적용이 안되는 문제
SpringBoot 2.5버전 부터는
spring.jpa.defer-datasource-initialization: true
spring.sql.init.mode: always
가 필요하다
'Spring Boot' 카테고리의 다른 글
자동으로 데이터의 생성일, 수정일, 생성자, 수정자 저장하기 (Auditing) (0) | 2024.01.22 |
---|---|
상태 코드 반환하기 (0) | 2024.01.18 |
서버 정지할 때 Build cancelled while executing task 에러 해결하기 (0) | 2023.12.18 |
Spring Boot 프로젝트에서 build.gradle 파일 역할 (0) | 2023.12.13 |
IntelliJ에서 한글이 깨져서 출력 되는 현상 고치기 (0) | 2023.11.25 |