1. yaml 이란
https://www.inflearn.com/questions/16184
yaml파일 이란 무엇인가요 - 인프런
질문 - yaml파일 이란 무엇인가요 안녕하세요 강사님 너무 질문이 많아서 죄송합니다. yaml파일 이라는 단어를 요 근래 많이 듣고 있는데 정확인 무슨 파일인가요 검색해 보지도 않고 무조건 질문을 드리는것 같아서 죄송하지만 쉽게 알려 주실거라는 기대로 질문을 드립니다. 답변 부탁 드리겠습니다.답변 - 안녕하세요^^ 쉽게 설명할 수 있도록 노력해볼께요! Xml과 Json 파일 포맷은 많이 들어보셨는지요? 아마 많이 쓰고 계실 걸로 생각 됩니다. 그럼 이런
www.inflearn.com
2. yml 설정
web.xml, root-context.xml, servlet-context.xml의 합본
root-context.xml=> 한번만 new되고 더이상 new될 필요 없는 파일 ex)데이터베이스 파일 설정
servlet-context.xml=> 지속적으로 new해서 계속 객체를 만들어야하는 파일
application.yml
server:
port: 8000
servlet:
context-path: /blog
encoding:
charset: UTF-8
enabled: true
force: true
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Seoul
username: cos
password: cos1234
jpa:
open-in-view: true
hibernate:
ddl-auto: create
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
use-new-id-generator-mappings: false
show-sql: true
properties:
hibernate.format_sql: true
jackson:
serialization:
fail-on-empty-beans: false
<위 코드 일부 설명>
server:
port: 8000
servlet:
context-path: /blog
encoding:
charset: UTF-8
enabled: true
force: true
context-path 란? 내 프로젝트에 들어가기 위한 진입점
예를들어,
@GetMapping("/http/lombok")
이렇게 적힌 것을 호출하려면? http://localhost:8000/blog/http/lombok
앞으로 할거는 jsp파일을 리턴하게!
static파일에는 브라우저가 인식할 수 있는 파일들을 넣어야한다. 예를들어, html, png 파일 등
static파일에 .jsp파일을 넣어놓으면?? 해당 파일을 못찾아준다. 왜?? jsp는 동적 파일이기 때문에 브라우저가 인식하지 못한다.
그러므로, static파일에 jsp파일을 넣지 않고!!
src-main폴더에 다음과 같이 폴더를 만든다.
그리고 위와 같이 설정해준 경로 확인!
prefix는??? controller가 리턴할 때 앞에 붙여주는 경로명
suffix는??? controller가 리턴할 때 뒤에 붙여주는 경로명그래서 아래와 선언하면 경로가 조금 이상해진다.
경로를 다음과 같이 바꿔준다.
(1) jasper
.jsp 경로를 설정한 이유는 스프링 부트는 기본적으로 jsp사용이 권장하기 않기 때문에 timeleaf 같은 다른 템플릿 엔진을 사용해야 한다. 하지만 jsp를 사용하기 위해서는 해당 구조로 폴더 구성을 한 뒤 세팅하여야 한다. (jasper)
(2) com.mysql.cj.jdbc.Driver
datasource 의 mysql 드라이버에 cj가 들어간 이유는 mysql 6점대 이상 버전부터는 해당 드라이버를 사용하고 그 이전 드라이버는 cj가 없는 com.mysql.jdbc.Driver를 사용한다.
(3) open-in-view
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter 클래스
영속성을 프리젠테이션 계층까지 가져간다. 트랜잭션은 Service계층에서 종료된다. Transaction이 종료된 후에도 Controller의 Session이 close되지 않았기 때문에, 영속 객체는 Persistence 상태를 유지할 수 있으며, 따라서 프록시 객체에 대한 Lazy Loading을 수행할 수 있게 된다.
버전 2.0부터 스프링 부트는 기본적으로 OSIV가 활성화되어있을 때 경고를 발행하므로 프로덕션 시스템에 영향을 주기 전에 이 문제를 발견 할 수 있다.
서블릿 필터에서 Session 을 오픈하고 트랜잭션을 시작하던 전통적인 방식의 OPEN SESSION IN VIEW 패턴과 달리 SpringMVC 에서 제공하는 OpenSessionInViewFilter 는 필터 내에서 Session 은 오픈하지만 트랜잭션은 시작하지 않는다. 따라서 서블릿 필터 안에서는 커넥션 풀로부터 JDBC 커넥션을 얻을 필요가 없다.
hibernate.enable_lazy_load_no_trans: true
OSIV를 활성화 하였다면 위에 옵션을 필요 없다. 그리고 OSIV는 스프링부트가 디폴트로 활성화하고 있는 옵션이다. 경고를 제거하기 위해 명확하게 적어준 것 뿐!!
(4) ddl-auto
- create - 서버 시작시마다 DB초기화
- update - 수정사항만 DB에 반영
- none - DB에 아무런 반영을 하지 않음.
(5) physical-strategy
- org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
- 엔티티를 만들 때 변수명 그대로 DB에 필드를 만들어 준다.
- org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
- 엔티티를 만들 때 변수명에 언더스코어를 붙여준다. 예) createDate -> create_date
(6) show-sql: true
(7) use-new-id-generator-mappings: false
use-new-id-generator-mappings 는 mysql로 말하면 auto_increment 오라클로 말하면 시퀀스를 어떤식으로 사용할지 방식을 결정하는 것인데 false를 하면 jpa가 사용하는 기본 넘버링 전략을 따라가지 않는다는 뜻이고 true를 하면 기본 넘버링 전략을 따라간다는 뜻이다.
(8) jackson:
serialization:
fail-on-empty-beans: false
Lazy-loading으로 인해 empty-beans이 생길 수 있다. 너그럽게 빈 객체를 허락해주는 옵션이다.
'springboot블로그만들기(youtube강좌)' 카테고리의 다른 글
스프링부트 강좌 41강(블로그 프로젝트) - DB격리수준 READ COMMIT (0) | 2021.07.04 |
---|---|
스프링부트 강좌 32강(블로그 프로젝트) - 스프링 기본파싱전략과 json통신 (0) | 2021.07.04 |
스프링부트 강좌 24강(블로그 프로젝트) - 회원가입 위한 insert 테스트 (0) | 2021.07.04 |
스프링부트 강좌 10강(블로그 프로젝트) - http1.1 요청방식 (0) | 2021.06.29 |
스프링부트 강좌 9강(블로그 프로젝트) - Git의 3가지 영역 (0) | 2021.06.29 |