Wanna be Brilliant Full-Stack Developer
2/24 SRPING YML 파일 이해하기! 본문
application.yml의 용도는 무엇인가? 왜 필요한가?
음료 공장을 만드는 기술자가 있고 음료 공장을 만들건데
이 기술자가 어떤걸 토대로 음료공장을 만드냐면
이 문서를 토대로 음료 공장을 만들것이다. 첫번쨰로는 음료공장을 만들건데 지금 만드는 공장이 몇번쨰 공장이냐면
공장이 하나 있고 (첫번쨰 공장) , 음료공장을 만드는 기술자가 2공장(두번쨰 공장) 을 만들것이다!
공장의 입구는 서쪽에 만든다! 그다음에 여기가 음료를 만드는 공장인데 누군가가 음료를 주세요 요청할떄 문서는
전부다 한글 문서로 변경되어서 받는다.
만약에 외국에서 영어로 요청을 받으면 애를 한글로 변경해서 받는다!
(4) 음료는 전부 콜라로 만들어서 출시된다
누군가가 요청을 하게 되면 응답을 전부 콜라로 만들어서 응답이 된다는것이다.
(5) 음료 창고는 컨테이너 박스를 이용한다
음료 창고는 공장에 연결이 되어있을건데 음료 창고는 컨테이너 박스로 만들어져있다.
(6) 음료는 요청에 따라 페트병, 캔, 병으로 출시 된다
누군가 요청할떄 페트병으로 요청하면 이 콜라는 페트병에 담겨서 출시가 된다.
근데 누군가가 만약에 캔으로 요청하게되면 캔으로 바껴서 콜라가 응답이 된다.
(7) 공장이 재가동 될떄 기존에 만들어 졌던 음료는 버리지 않는다.
재가동이 되면 기존에 만들어졌던 콘테이너 박스에 있는 음료를 버리지 않고 그대로 사용(유지) 한다!
(8) 음료 요청시 A4용지 2장 이상의 문서는 받지 않는다
만약에 애가 문서를 하나 던지는데 어떤애는 A4 1장을 요청하여 되는데 어떤애는 2장요청하면 요청 받지 않는다
(9) 음료 요청은 아무나 할 수 없다. 암호를 아는 사람만 요청한다
음료 요청할떄 암호를 아는 사람만 요청이 가능하도록 만들어졌따.
이 9가지 문서를 읽고 기술자가 이음료 공장을 만드는것이다.
yml 파일은 머냐면 내가 스프링 프레임워크로 공장을 만들건데 그 공장을 만들기 위한 문서이다.
그래서 스프링서버가 시작이 될때 이 yml 파일을 참고해서 스프링 프레임워크 서버가 만들어진다.
음료 공장을 만드는 기술자도 마찬가지다. 이 문서의 9가지 문서를 읽고 공장을 만들어내는것이다.
그러면 비교하면서 보도록 하겠다.
port가 8080이다. port가 8080 이라는건 공장 입구는 서쪽이라는거와 같은것이다.
8080으로 들어와야 들어올수가 있다는것이다.
context-path는 무엇이냐면 어떤 공장인지를 물어보는것이다.
/를하면 내공장으로 들어올수 있다. 두번쨰 공장이라는것이 ' / ' 이다.
encoding이라고해서 charset: utf-8이라는건 전부 한글 문서로 변경해서 받는다는것을 말하고 있다.
저밑에 spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp 여길 보면 어떤 요청이 왔을떄 응답을 .jsp파일로 응답을 한다는 설정이다.
니가 어떤 요청을 하면 니가 요청한 거에대한 응답을 전부다 .jsp파일로 하겠다.
이건 머냐면 (4) 음료는 전부 콜라로 만들어서 출시된다와같다 . 내가 만약에 jsp가 아니라 다른것을 바꿔서 응답할수도 있다. 데이터를 응답할수도 있고 Json data, XML, html 와 같이 응답을 여러가지로 할수 있다.
여기서 그러면 음료창고는 컨테이너를 사용한다는데 YML 파일에서는 mariadb를 사용하고 있다는것이다.
그러면 음료창고를 건물이나 벽돌을 사용할수 도있는데 어떤걸 사용할지를 여기에 정의할수 있다.
MYSQL을 사용할수도있꼬 ORACLE등 여러가지 데이터베이스를 사용할 수도있다.
jpa:
open-in-view: true
hibernate:
ddl-auto: update # create 데이터를 인서트했는데 나중에 다시 서버를 재실행하면 insert한 데이터가 사라진다 , none
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
show-sql: true
JPA라는걸 설정하게되면 (6) 요청에 따라 패트병,캔.병으로 출시된다! 라는 형식과 같이 이러한식으로해서 원하는대로 응답을 할수 있다. 원래는 응답이 고정이 되어있는데 JPA를 사용하면 ORM기술을 활용해 엄청나게 동적으로 내가 원하는 데이터를 응답할 수도 있다.
원래는 음료 요청을 페트병으로 출시된다. 이렇게되면 내가 페트병을 받고나서 내가 캔을 받아 해야하는데 응답은 페트병으로 출시가 되니까 페트병으로 받아서 콜라 병을 만들어서 다시 옴겨 담아야하는데
캔으로 내가 콜라를 팔고 싶다면 공장에 요청을 하면 무조건 페트병으로 나오면 이걸 내가 캔을 하나 구매를 하여 캔에 패트병에 있는 콜라를 옴겨담아야한다. 하지만 JPA (ORM)을 하면 그러지 않아도 된다.
내 요청에 따라 원하는대로 자유롭게 변경되서 응답이 된다. 굉장히 편리하다!
공장이 재가동될때 기존에 만들어졌던 음료는 버리지 않는다라는건
ddl-auto: update 이부분인데 ( 서버가 재가동될떄 마다 데이터베이스에 적혀있는 데이터나 스키마들, 테이블들이 그대로 유지된다는것이고 ) create가 되면 공장이 재가동이 될떄마다 기존 컨테이너에 있는 모든 음료들은 폐기 되는것이다.
음료 요청시 A4용지 2장이상의 요청을 받지 않는다라는건 !
servlet:
multipart:
enabled: true
max-file-size: 2MB 어떤 요청을 받을떄 MAX파일 사이즈가 2M로 고정이 되어있다라는것이다.
음료 요청은 아무도 할수 없다 암호를 아는 사람만 요청한다는건?
security:
user:
name: test
password: 1234 이것을 통해 아이디와 비밀번호만 아는 사람만 들어올수 있다는것이다.
결국 YML 파일이라는건 내가 스프링프레임워크를 만들떄 이프레임워크를 이 스프링이라는 성을 어떻게 만들지 정의를 하는것이 YML파일이다!
'Some Memos > Spring 개념' 카테고리의 다른 글
2/24 SPRING HTTP 4가지 요청방식 (0) | 2022.02.24 |
---|---|
2/24 SPRING Controller 기본 동작 이해하기! (0) | 2022.02.24 |
2/22 Spring Web.xml은 무엇인가?? (0) | 2022.02.24 |
Spring 서블릿 객체의 생명주기?? (0) | 2022.02.22 |
2/21 Spring 톰캣은 무엇인가?? (0) | 2022.02.22 |