스프링이란?
- 프레임워크
- 오픈소스
- IoC 컨테이너를 가지고 있다
- DI를 지원한다
- 많은 필터 소유
- 많은 어노테이션 소유
- MessageConverter를 가지고 있다 기본값은 json
- BufferReader 와 BufferedWriter를 쉽게 사용할 수 있다.
@ReponseBody -> BufferedWriter
@RequestBody -> BufferReader
JPA란?
- Java Persistence(영속성) API (데이터를 디비에 저장될 환경을 마련해주는 API)
- API: App Programming Interface
- Interface: 상하관계가 존재하는 약속
- ORM Object Relational Mapping 기술(자바의 데이터를 디비에 생성하도록 해줌)
- DB와 OOP의 불일치성을 해결하기 위한 방법론은 제공한다(DB는 객체저장 불가능)
- 반복적인 CRUD작업을 생략하게 해준다
- 영속성 컨텍스트(모든 정보)를 가지고 있다
- OOP의 관점에서 모델링을 할 수 있게 해준다(상속, 콤포지션, 연관관계)
- 방언 처리가 용이하여 Migration하기 좋음, 유지보수에도 좋음
스프링부트 원리
- 내장 톰켓을 가진다(자바 코드를 컴파일하고 html로 변환해줌)
- 서블릿 컨테이너(톰켓)
- 자바관련 요청을 하게 되면 서블릿 컨테이너로 가게된다.
- .css, .html 요청 아파치로 가게된다.
- 최초 요청시에만 객체를 한번생성, 두번째 요청부터는 스레드로 객체를 재사용하게 된다.
- url: 자원접근 ex) http:naver.com/
- uri: 식별접근 ex) http:naver.com/board/save
- web.xml(문지기의 역할)
- ServletContext의 초기 파라미터
- Session의 유효시간 설정
- Servlet/JSP에 대한 정의
- Mime Type 매핑 (내가 들고올 데이터가 뭔지 알려주는 것)
- Welcome File List
- Error Pages 처리
- 리스너/필터 설정
- 보안
- FrontController 패턴
- RequestDispatcher
- DispatchSerlvet
- 스프링 컨테이너
- 요청주소에 따른 적절한 컨트롤로 요청
- 응답
참고
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9
오... 대박...