본문 바로가기
개발 공부

[스프링 동작 과정] feat. 컨테이너, MVC

by 도됐좋 2023. 5. 12.
순서
1. 스프링
2. 스프링 컨테이너
3. 스프링 MVC

 

✅ 스프링이란?

- 자바 기반의 오픈소스 애플리케이션 프레임워크

- 컨테이너객체들을 관리하면서 의존성 주입제어의 역전을 통해 결합도를 낮춰줌

스프링을 이용한 웹 서버 구조 간략화

➤ 서블릿(Servlet)이란?

- 웹 페이지를 동적으로 생성하기 위해 쓰이는 자바 클래스의 일종

- 클라이언트 요청을 처리하고, 그 결과를 반환해주는 역할

 

➤ 빈(Bean)이란?

- 컨테이너에 의해 관리되는 자바 객체
- 코드로 작성된 동작 수행하는 역할

 

➤ 의존성 주입(DI)이란?

- 객체 간의 의존관계를 미리 설정해두면 컨테이너가 자동으로 연결해줌

- 직접 의존 객체를 생성하거나 호출할 필요가 없어지고, 결합도가 낮아짐

 

➤ 제어의 역전(IOC)이란?

- 스프링에서는 객체의 생성부터 소멸까지 컨테이너가 관리함

- 컨테이너가 객체를 관리하면서 필요에 따라 사용자의 코드를 호출함

**비교되는 개념으로, 라이브러리 같은 경우, 사용자가 필요에 따라 라이브러리의 코드를 호출함


스프링 컨테이너

- 빈(Bean)의 생명 주기를 관리하고, 서로 다른 빈들을 연결해주는 역할

스프링 컨테이너 동작 구조 간략화

➤ 디스패처 서블릿(DispatcherServlet)

    - 요청을 가장 먼저 받아서 적합한 빈으로 보내준 뒤, 동작 과정이 끝나면 응답을 반환하는 역할

 

빈(Bean) 등록 방법

1. @Component

    - 클래스나 인터페이스에 @Component를 붙이는 컴포넌트 스캔 방식

    - @Controller, @Service, @Repository 등의 어노테이션도 @Component의 상속을 받고 있으므로 컴포넌트 스캔 대상

2. @Configuration + @Bean

    - 클래스나 인터페이스에 @Configuration을 붙이고, 인스턴스를 생성하는 메소드에 @Bean을 붙이는 방식

    - 개발자가 제어 불가능한 외부 라이브러리 등을 빈으로 등록할 때 사용

 

 빈(Bean) 주입 방법

1. @Autowired

    - 주입이 필요한 곳에 @Autowired를 붙이는 방식(단점들이 있어서 권장 X)

2. 생성자 주입

    - 생성하려는 객체가 사용하는 의존성을 생성자의 파라미터로 전달하는 방식

    - 생성자가 2개 이상인 경우에는 @Autowired를 붙여야 함


스프링 MVC

- 스프링 프레임워크의 하위 모듈

- Model, View, Controller 3가지 구성요소를 사용해 다양한 요청을 처리하고 응답하는 역할 수행

 컨트롤러(Controller)

- 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 수행

- 뷰에 전달할 데이터를 모델에 담아줌

 

 뷰(View)

- 모델에 담겨있는 데이터로 응답 화면을 생성

 

모델(Model)

- 뷰에 출력할 데이터를 담는 곳

- 모델 덕분에 뷰는 화면 렌더링에만 집중 가능

 

/*
 * 제가 기억하려고 최대한 쉽고 간략하게 정리한 글이라

 * 다소 부족한 부분이 있을 수 있습니다.

 * 그래도 이해하시는데 도움이 됐으면 좋겠습니다.
 */