[스프링SPRING]스프링 MVC프로젝트, 주요 어노테이션(Annotation)
Spring MVC 프로젝트 생성하는 두가지 방법
- Spring Legacy Project
- Spring Starter Project(Spring Boot)
- 최대한 간결하게 실행, 배포하기 위한 방법
- WAS없이 실행가능
- 최근 유행 > 빠르게 처리가능하기에 간단한 테스트용으로 자주 사용
- 단점 : jsp뷰 별도의 설정 필요
Spring MVC
*.me
주소를 직접 처리해서 사용하는 개발방법
Spring MVC | 특징 |
---|---|
M odel | 데이터 처리(DB) |
V iew | 화면 처리(jsp) |
C ontroller | 뷰와 모델을 연결 |
MVC패턴을 사용하는 이유 두가지
- 개발자,디자이너의 영역을 분리
- 각각의 주소(URI)통한 페이지 제어하기 때문에 유지보수 쉽다.
스프링 MVC프로젝트안 src 폴더하위의 각 파일이 가진 의미
servlet-context.xml
: 스프링 프로젝트에서 웹과 관련된 모든 속성을 처리root-context.xml
: 스프링 프로젝트에서 웹을 제외한 모든 속성을 처리
FrontController패턴
- 기존 패턴(Page Controller)보다 더 강제적으로 페이지제어를 할 수 있게 됨
- 기존 패턴(컨트롤러 하나가 전체 로직을 제어) –위임 사용–> FrontController(일부분만 제어하는 컨트롤러 생성)
- 스프링MVC패턴에서 컨트롤러의 역할
- 페이지 요청에 따라 파라미터 처리(DTO객체, VI객체)
- 애노테이션을 사용한 처리
- 로직이 집중되게끔 해주는 역할
- 테스트 동작의 편의성
1 | ---------------------------------------------------------------- |
Spring MVC 각 작업분류 | 작업 |
---|---|
스프링MVC가 처리해주는 작업 | URI를 분석해서 알맞는 Controller 찾기 |
Controller에 필요한 메서드 호출 | |
Controller의 결과 데이터를 VIEW로 전달 | |
적절한 VIEW 페이지를 찾아서 연결 | |
개발자가 처리해야하는 작업 | 특정 URI에 동작하는 Controller를 설계 |
서비스 객체 생성 (약한결합) | |
DAO 객체 생성 (약한결합) | |
Controller 내부에 원하는 동작을 메서드로 설계 | |
VIEW에서 전달받은 데이터 출력 |
스프링 웹 프로젝트
- Presentation Layer : UI담당하는 계층, 웹,모바일 구분
- view-jsp 페이지, html/css/js 페이지, Controller 페이지 처리
- Business Layer : 서비스 계층, 사용자 요구사항을 바탕으로 구현하는 계층(기능적 구현)
- 컨트롤러와 DB 직접 연결을 방지하는 역할
- Data Access Layer(=Persistence Layer) : 데이터처리 계층, DB관련 처리
- DAO객체 처리
- My(i)Batis 호출(마이바티스가 아래의 DB에 접근함)
- Data Base
주요 애노테이션(Annotation)
주요 애너테이션 | 특징 |
---|---|
@Controller | 스프링 MVC 컨트롤러 객체의미 (클래스) |
@RequestMapping | 특정 URI에 매칭되는 클래스,메서드처리 (클래스,메서드) |
@RequestParam | 요청정보 중에서 파라미터값을 찾을때사용(파라미터) |
@ModelAttribute | 자동으로 해당 객체를 뷰까지 전달 (메서드,파라미터) |
@SessionAttribute | 세션객체 안에서 정보를 유지 (클래스) |
@Repository | DAO 객체 (클래스) |
@Service | 서비스 객체(클래스) |