일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Flutter
- 알고리즘공부
- JPA스터디
- 프로그래머스
- Kafka
- 플러터 공부
- 코테준비
- 자료구조공부
- 스프링공부
- nestjs스터디
- 코테공부
- 기술면접공부
- 기술공부
- Axon framework
- nestjs공부
- 스프링부트공부
- 스프링부트
- 스프링 공부
- K8S
- nestjs
- JPA
- 카프카
- 스프링
- querydsl
- JPA 공부
- JPA예제
- 플러터 개발
- DDD
- 자바공부
- JPA공부
- Today
- Total
DevBoi
잡다하지만 필요한 개발지식 14 본문
MVC1 과 MVC2의 패턴차이
모델1은 jsp페이지 안에서 로직처리를 위해 자바코드가 함께 사용된다.
요청이 오면 직접 자바빈이나 클래스를 이용해 작업을 처리하고
이를 클라이언테 출력해준다.
구조가 단순하지만, jsp내 html코드와 자바코드가 같이 사용되면서
복잡하고 유지보수가 어렵다.
모델2는 이와 다르게 servlet을 만들어 역할을 분담한다.
요청 결과를 출력해주는 뷰만 jsp가 담당하고 흐름 제어 및 비즈니스
로직에 해당하는 컨트롤러의 역할은 서블릿이 담당한다.
유지보수가 쉽지만, 구조가 어렵다.
DAO 과 DTO의 차이
DAO는 데이터베이스의 데이터를 접근하기 위한 객체이다.
데이터베이스 접근을 하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용된다.
사용자는 자신이 필요한 IF를 DAO에게 던지고 DAO는 이 IF를 구현한 객체를 사용자가 편허ㅏ게 이용할슀게 해준다.
DAO는 커넥션 까지 설정되어있는 경우가 많으나,
mybatis의 경우 커넥션 풀까지 제공되고 있기 때문에 DAO를 별도로 만드는 경우는 드물다.
DTO는 VO라고도 표현하며, 계층간 데이터 교환을 위한 자바 빈즈이다.
데이터베이스 레코드의 데이터를 매핑하기 위한 데이터 객체이다. 주로 getter,setter만가지고있다.
즉 데이터를 얻어, 컨트롤러나 서비스단으로 보내는 데 쓰인다.
VO는 불변, readonly이고, dto는 가변, 수정가능하다
스프링 MVC 구조 흐름
1.dispatcherServlet 이 클라이언트로 부터의 요청을 받으면
2.이를 요청할 핸들러 이름을 알기 위해, 핸들러맵핑에게 물어보고,
3. 핸들러맵핑은 요청 url을 보고 핸들러 이름을 디스패처 서블릿에게 알려준다.
4. 핸들러 실행하기 전,후에 처리가 필요한 것들을 인터셉터로 만들어주고
5. 디스패처 서블릿은 해당 핸들러에게 제어권을 넘겨준다,
6. 핸들러는 응답에 필요한 서비스를 호출, 랜더링해하는 뷰 이름이 있으면 판단해서
서블릿에게 전송해준다.
7. 디스패처 서블릿은 뷰이름을 뷰 리졸버에게 전달해 응답에 필요한 뷰를 만들라고 명령한다,
8. 해당하는 뷰는 디스패처 서블릿에게 받은 모델과 컨트롤러를 활용, 원하는 응답을 생성해서 다시 보내준다.
9. 디스패처 서블릿은 뷰로 받은 것을 클라이언트에게 응답으로 준다.
IOC란?
인스턴스의 생성~ 소멸까지 개발자가 아닌 컨테이너가 관리해주는 것을 말한다.
인스턴스 생성의 제어를 서블릿과 같은 bean을 컨테이너가 관리해준다.
DI란?
서로 의존관계인 객체를 컨테이너가 알아서 연결해준다.
컨테이너가 흐름의 주체가 되어 의존관게를 주입해준다.
생성자,메서드,일반 메서드를 통해서 의존성을 주입하고 이걸 컨테이너가 관리해줘서
코드가 단순해지고,컴포넌트간의 결합도를 낮게 유지할수있다.
이런 유지는 종속성이 감소되어, 서로 의존관계의 변경에도 크게 민감하지않게 된다.
'[Computer Science]' 카테고리의 다른 글
잡다한 기술 지식 (0) | 2021.08.25 |
---|---|
Mac OS git 설치 및 연동 정리 (1) | 2021.08.13 |
잡다하지만 필요한 개발지식 13 (0) | 2021.08.11 |
잡다하지만 필요한 개발지식 12 (0) | 2021.08.09 |
잡다하지만 필요한 개발지식 11 (0) | 2021.07.30 |