본문 바로가기
Etc/Study Note

스프링 MVC 패턴

by happy coding! 2018. 1. 6.
반응형

Dreaming IT Study 3주차 학습 내용 (1)




Spring 의 개념과 MVC 패턴



프레임워크 


- 프로그래밍에서 특정 운영 체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스와 라이브러리 모음

- 개발에 대한 표준을 제공하는 틀



스프링 프레임워크


- 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크

- 동적인 웹 사이트를 개발하기 위한 여러가지 서비스 제공

- 대한민국 공공기관의 웹 서비스 개발시 사용을 권장하고 있는 전자정부 표준 프레임워크의 기반 기술

- 스프링 프레임워크는 Maven 환경을 지원하므로 패키지 의존성 관리에 효율적

- 스프링 프레임워크는 자체 톰캣 서버를 제공

- STS(Spring Tool Suite)라는 스프링 프레임워크에 최적화된 환경을 지원하는 IDE를 제공




웹 표준 개발 스팩(스프링 권장) : MVC 패턴 + SingleTone 패턴 + Ajax + Mybatis + HTML5 + CSS3(Bootstrap) + Javascript




스프링 특징


- 경량 컨테이너. 자바 객체를 직접 관리

- 각각의 객체 생성, 소멸과 같은 라이프 사이클 관리


- POJO(Plain Old Java Object) 방식의 프레임 워크

- 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속받을 필요가 없음.- - 기존에 존재하는 라이브러리 등을 지원하기에 용이.


- 제어반전(IoC : Inversion of Control)을 지원. 

- 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있음

- 필요에 따라 스프링에서 사용자의 코드를 호출


- 의존성 주입(DI: Dependency Injection)을 지원

- 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다


- 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming) 지원

- 트랜잭션이나 로깅, 보안 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리


- 영속성과 관련된 다양한 서비스 지원

- iBatis나 Hibernate 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스 제공


- 확장성이 높다



 소프트웨어 공학 핵심 가치 : 결합도를 낮추고 응집력을 높여라



스프링 주요 모듈


- 제어 반전 컨테이너 (IoC : Inversion of Control)

- 관점 지향 프로그래밍 프레임워크

- 데이터 액세스 프레임워크

- 트랜잭션 관리 프레임워크

- 모델-뷰-컨트롤러 패턴





- 위 그림은 MVC 패턴

- 스프링 환경에서 프로젝트 생성시 위와 같은 구조로 패키지들을 설계


1. View - Controller 

뷰는 사용자가 실제 보여지는 화면을 의미. 

컨트롤러는 이후 과정에서 발생되는 데이터에 따라 적절하게 다시 사용자에게 결과 화면을 제공. 

View 영역은 html, jsp 등으로 구성


2. Controller - Service 

Service 는 실제 비즈니스 로직이 들어가는 부분

컨트롤러는 뷰단에서 받은 이벤트를 적절한 서비스에게 전달. 이를 받은 서비스는 비즈니스 로직을 처리


3. Service - DAO 

실제 데이터베이스 작업을 통해 데이터를 로드하는 과정

비즈니스 로직에서 필요한 데이터를 실제 Connection을 담당하고 있는 DAO를 이용해서 가져옴


4. DAO와 DB의 관계

JDBC로직을 이용해 DB에서 CRUD를 통해 데이터를 입력, 로드


5. Service와 DAO가 작업을 수행하는데 있어서 데이터 포맷을 제공해주는 역할

DTO, VO, Model이라고도 불림

경우에 따라 클래스 생성 시 Beans라고도 함

스프링은 객체 단위로 움직이기 때문에 DTO를 이용해서 데이터를 주고 받음


배치 프레임워크

스프링은 특정 시간대에 실행하거나 대용량 자료를 처리하는데 쓰이는 일괄처리를 지원하는 배치 프레임워크를 제공. 스프링배치는 Quartz 기반으로 동작




[원문 및 그림 출처]

https://scw0531.blog.me/220984890046

반응형

'Etc > Study Note' 카테고리의 다른 글

TDD, 리팩토링, 클린코드(1주차)  (0) 2018.04.01
Java & HTTP RESTFul API & Servlet  (0) 2018.01.06
[GIS] OpenLayers Simple Map 만들기  (0) 2017.12.16

댓글