일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SQL
- DI
- 스프링 부트 입문
- JPA
- thymeleaf
- java
- springboot
- spring
- 스프링 부트 기본
- 생성자 주입
- Javascript
- db
- 스프링부트
- @Configuration
- 싱글톤
- resultMap
- 스프링 컨테이너
- sqld
- 스프링 빈
- 스프링 부트
- jdbc
- 필드 주입
- assertThrows
- 스프링
- DIP
- Effective Java
- kafka
- mybatis
- 스프링 프레임워크
- assertThat
- Today
- Total
선 조치 후 분석
[Spring] 스프링 컨텍스트(Spring Context) 그리고 스프링 MVC 개념과 흐름 본문
[Spring] 스프링 컨텍스트(Spring Context) 그리고 스프링 MVC 개념과 흐름
JB1104 2025. 1. 13. 17:31스프링 컨텍스트 (Spring Context)
- 스프링 프레임워크의 핵심 기능으로, 애플리케이션에서 사용되는 객체(빈, Bean)를 생성, 관리, 설정, 조립하고 제공하는 중앙관리 시스템
- 애플리케이션 실행에 필요한 구성 요소를 관리하는 컨테이너(Container)
스프링 컨텍스트 역할
1. 객체 생성 및 관리
▶ @Component, @Service, @Repository, @Bean 등의 어노테이션으로 등록된 객체를 생성하고 관리
2. 의존성 주입(Dependency Injection, DI)
▶ 객체 간의 의존 관계를 자동으로 연결해 주는 역할
▶ 이를 통해, 코드에서 객체 생성 및 초기화 과정을 단순화
3. 빈(Bean) 검색 및 제공
▶ 필요한 객체를 컨텍스트에서 검색해서 제공하며, 이때 개발자가 직접 객체를 생성하지 않아도 된다
4. 라이프사이클 관리
▶ 스프링 컨텍스트는 빈의 생명주기(LifeCycle)를 관리
5. AOP(Aspect-Oriented Programming) 지원
▶ 스프링 컨텍스트는 부가적인 동작(예: 로그, 트랜잭션 관리)을 객체에 쉽게 적용할 수 있도록 AOP 기능 제공
6. 이벤트 처리
▶ 애플리케이션 내에서 발생하는 이벤트를 발생하고 이를 수신하는 기능도 제공
스프링 컨텍스트의 주요 구현체
1. ApplicationContext
▶ 스프링 컨텍스트의 대표적인 인터페이스
▶ 주요 구현체
- ClassPathXmlApplicationContext : XML 파일 기반 설정
- AnnotationConfigApplicationContext : 자바 클래스 기반 설정
- WebApplicationContext : 웹 애플리케이션 전용 컨텍스트
2. BeanFactory
▶ ApplicationContext의 상위 개념으로, 간단한 DI 기능만 제공
▶ 현재는 ApplicationContext가 사용됨
스프링 컨텍스트의 구성 요소
1. 빈(Bean)
▶ 컨테스트에 등록된 객체
▶ 주로 @Component, @Service, @Repository, @Controller 또는 @Bean으로 정의
2. 설정 메타정보
▶ 애플리케이션의 설정 정보(XML, Java Config, Annotation)
3. 빈 정의(Bean Definition)
▶ 스프링 컨텍스트는 설정 정보를 기반으로 빈의 생성 방식, 스코프, 의존성 등을 정의
Spring MVC
- Model-View-Controller 패턴을 기반으로 웹 애플리케이션을 개발하기 위한 강력한 프레임워크
Spring MVC의 주요 구성 요소
1. DispatcherServlet
▶ Spring MVC의 중심 컨트롤러 역할을 수행
▶ 모든 요청을 받아서 적절한 핸들러로 요청을 위임하고, 응답을 생성하는 과정을 관리
2. HandlerMapping
▶ URL과 컨트롤러를 매핑
▶ 요청 URL에 따라 어떤 컨트롤러 메서드를 실행할지 결정
3. Controller
▶ 비즈니스 로직을 처리하고, 모델 데이터를 준비하거나 요청을 처리한 결과 반환
4. ModelAndView
▶ 컨트롤러에서 반환되는 객체로, 데이터(Model)와 뷰(View)를 함께 포함
5. ViewResolver
▶ 어떤 뷰를 렌더링 할지 결정
▶ JSP, Thymeleaf, FreeMaker 등의 뷰 템플릿 엔진과 연동
6. View
▶ 최종적으로 사용자에게 보이는 화면
▶ ViewResolver가 결정한 뷰 템플릿 엔진에 의해 렌더링
Spring MVC 요청 처리 흐름
1. 클라이언트 요청
▶ 사용자가 브라우저에서 URL로 요청
▶ 요청은 DispatcherServlet으로 전달
2. DispatcherServlet이 요청 처리 시작
▶ Spring 컨텍스트(ApplicationContext)에서 필요한 빈을 로드
▶ 적절한 HandlerMapping을 통해 요청을 처리할 컨트롤러 찾기
3. HandlerAdapter 호출
▶ HandlerAdapter는 선택된 컨트롤러의 메서드를 실행할 수 있도록 도와줌
▶ 컨트롤러 메서드가 실행되면, 결과를 ModelAndView 객체로 반환
4. ModelAndView 생성
▶ 컨트롤러는 처리 결과 데이터를 Model에 담고, 어떤 뷰를 렌더링 할지 뷰이름(ViewName)을 반환
5. ViewResolver가 뷰를 결정
▶ 반환된 ViewName을 바탕으로 적절한 뷰 템플릿을 선택
▶ 예: InternalResourceViewResolver는 JSP 파일을 찾는다
6. View 렌더링
▶ 선택된 뷰(View)가 Model 데이터를 사용해 최종 HTML 응답을 생성
7. DispatcherServlet이 응답 반환
▶ 최종적으로 생성된 응답을 클라이언트에게 반환
'Framework > Spring Framework' 카테고리의 다른 글
web.xml, dispatcher-servlet.xml, pom.xml 개념과 차이점 그리고Spring 웹 애플리케이션 동작순서 (0) | 2023.08.25 |
---|---|
@Autowired vs @Resource 차이점 (0) | 2023.08.21 |
@RequestBody와 @ResponseBody (0) | 2023.08.21 |
@PathVariable vs @RequestParam vs @RequestBody 그리고 HttpServletRequest , 파라미터 수신 방법 정리 (1) | 2022.09.23 |
[Spring Framework] Maven으로 JRE System Library JavaSE-1.8로 변경하기 (0) | 2022.05.16 |