정리노트

[스프링] 스프링 MVC

망고고래 2024. 1. 15. 18:00

1. 스프링과 스프링 MVC

1.1 스프링

1.2 스프링 MVC

 

1.1 스프링

1.1.1 스프링이란?

표준 및 엔터프라이즈 자바 응용 프로그램을 신속하게 개발하는 데 널리 사용되는 오픈소스 프레임워크

개발시 생산성이 우수하며, 개발이 완료된 뒤 사후 관리를 위한 유지 보수도 쉽다.

자바는 웹 애플리케이션을 개발할 때 한 클래스 안에서 수직적인 흐름만 제어할 수 있지만, 스프링은 특정 클래스에 대한 수평적 처리까지 가능하다.

의존성 주입(Dependency Injection)이나 관점 지향 프로그래밍(Aspect Oriented Programming, AOP)과 웹 MVC 프레임워크를 제공한다.

1.1.2 스프링의 주요 특징

컨트롤러를 만들 때 HttpServlet 클래스를 상속하지 않아도 된다.

스프링은 일반적인 자바 언어와 꼭 필요한 API 외에는 특정 구현 기술에 종속되지 않으며, 특정 데이터베이스나 서버에 의존하지 않는 자바 클래스만으로 구성해도 프로그래밍이 가능하다.(POJO Plain Old Java Object)

 

 

의존성 주입 지원

객체 또는 구성 요소 사이의 의존 관계를 직접 생성하거나 제어하는 것이 아니라 외부의 빈 설정 파일을 활용해서 스프링 컨테이너가 자동으로 연결하는 방식

컨테이너가 객체 의존 관계 자동 연결→개발자가 직접 컨테이너 API로 의존적인 객체들의 관계에 관여하지 않아도 됨. 객체 의존 관계가 필요할 때만 외부의 빈 설정 파일(*.xml)에 관련 정보 추가

 

주요 장점: 느슨한 결합도(loose coupling), 두 객체 간 의존 관계를 줄임(언제든지 객체를 바꿀 수 있음)

객체 간 의존 간계를 유연하게 처리하려면 인터페이스 활용→의존 객체를 바꾸지 않고 인터페이스 구현 클래스로 변경해서 사용 가능

 

 

공동 모듈을 재사용하는 AOP 지원

모듈은 로깅/트랜잭션 관리/보안 등 시스템 서비스를 수행해야 하는 경우가 많음(공통 관심사 cross-cutting concerns)

관점 지향 프로그래밍: 애플리케이션 내부에서 공통 관심사를 비즈니스 로직으로 분리하고 애플리케이션에 삽입하는 기술

애플리케이션 전체에 걸쳐 사용되는 기능을 애스팩트에 담아 재사용할 수 있게 함

객체 지향을 보완하는 패러다임. 더 유연하고 견고한 소프트웨어

 

 

일관성 있는 모듈의 트랜잭션 지원

1)프로그래밍 트랜잭션

코드에서 트랜잭션 범위를 정교하게 정의할 수 있지만 트랜잭션이 스프링의 종속적인 코드가 되기 쉬움

2)선언적 트랜잭션

코드를 수정하지 않고도 트랜잭션 적용/변경 가능

XML 설정 파일이나 애너테이션을 이용해서 트랜잭션의 범위/규칙 정의 가능→트랜잭션 관리가 쉬움

 

 

1.2 스프링 MVC

1.2.1 스프링 MVC 구성요소

(1)디스패처 서블릿

웹에서 전달받은 요청을 컨트롤러에 전달하고 컨트롤러가 반환한 결과값을 뷰에 전달하여 알맞은 응답 생성

(2)핸들러 매핑

클라이언트가 요청한 URL을 어떤 컨트롤러가 처리할지 결정

(3)컨트롤러

클라이언트의 요청을 처리하고 결과 반환. 응답 결과에서 보여줄 데이터를 모델에 담아 전달

(4)모델 앤 뷰

컨트롤러가 처리한 결과 정보와 뷰 선택에 필요한 정보를 담음

(5)뷰 리졸버

컨트롤러의 처리 결과를 보여줄 뷰 결정

(6)뷰

컨트롤러의 처리 결과 화면 생성

 

1.2.2 스프링 MVC 흐름

 

1) 웹 브라우저에서 URL 요청→디스패처 서블릿에 전달

2) 디스패처 서블릿에서 핸들러 매핑으로 적합한 컨트롤러 검색

3) 핸들러 매핑이 클라이언트 요청을 처리할 컨트롤러를 디스패처 서블릿에 반환

4) 컨트롤러가 클라이언트 요청을 전달받고 GET/POST 방식으로 적합한 메서드 호출

5) 호출된 메서드가 정의된 비즈니스 로직으로 모델 데이터 설정, 뷰 이름을 디스패처 서블릿에 반환

6) 디스패처 서블릿이 뷰 리졸버에 도움 요청, 응답 결과를 생성할 뷰 객체 검색

7) 뷰 리졸버가 적절한 뷰를 결정해서 디스패처 서블릿에 반환

8) 디스패처 서블릿이 데이터가 담긴 모델을 뷰로 보내고 클라이언트 요청에 대한 응답 작업 완료

9) 뷰가 처리 결과를 디스패처 서블릿에 반환

10) 클라이언트 화면에 응답 결과 출력

 

 

2. 스프링 MVC 애플리케이션 분석

2.1 스프링 MVC의 프로젝트 구조

2.2 환경 설정 파일 살펴보기: web.xml

2.3 스프링 MVC 환경 설정 파일

2.4 컨트롤러

2.5 뷰

2.6 메이븐 환경 설정 파일: pom.xml

 

2.1 스프링 MVC의 프로젝트 구조

2.2 환경 설정 파일 살펴보기: web.xml

2.3 스프링 MVC 환경 설정 파일

2.4 컨트롤러

2.5 뷰

2.6 메이븐 환경 설정 파일: pom.xml