티스토리 뷰
스프링 동작 흐름
스프링은 자바 플랫폼을 위한 오픈소스 웹 어플리케이션 프레임워크다.
스프링의 주요 특징으로는 IOC(Inversion of Control), DI(Dependency Injection), AOP(Aspect Oriented Programmin) 이 있다.
스프링 핵심
- IOC(Inversion of Control): 객체의 생성과 관리를 프레임워크가 담당
- -- DI(Dependency Injection): IOC의 한 형태로, 객체가 다른 객체를 생성하지 하는 대신, _외부에서 객체를 주입_하여 모듈 간 결합도(의존성)을 낮춤
- AOP(Aspect-Oriented Programming): 여러 객체의 공통부분을 모듈화(코드의 중복을 줄이고 유지보수성 높임)
스프링 MVC의 동작 흐름
- DispatcherServlet(web.xml에서 설정):
- Front Controller 역할을 수행하며, 모든 HTTP 요청을 받아들여 처리 흐름을 제어합니다.(정확히는 모든 요청을 가로채는 건 아니고, web.xml에 에 등록된 내용만 가로챈다.)
- 사용자 요청을 해석하고, 적절한 컨트롤러를 호출합니다
- HandlerMapping(servlet-context.xml에서 설정):
- 클라이언트의 요청을 기반으로 등록된 bean 중에서 어떤 핸들러(컨트롤러 메소드)를 실행할지 결정합니다.
- Bean은 애플리케이션 시작시에 수행되고 스프링 컨테이너가 설정파일,어노테이션(ex @Component,@RequesMapping ..)을 스캔하여 생성 및 등록한다.
- HandlerAdapter:
- 실제로 컨트롤러 메소드를 호출하는 역할을 합니다[^1].
- Controller(Java, @Controller 어노를 통해 스프링에 등록):
- 클라이언트 요청에 맞는 presentation layer의 처리를 수행합니다.
@RequestMapping("/users") public class UserController { @GetMapping public List<User> getUsers() { // 비즈니스 로직 수행 return userService.getUsers(); } }
- 비즈니스 로직을 처리하고, 그 결과를 Model 객체에 저장합니다.
- Model(JavaBeans, POJOs, or other Java objects( ex Users)):
- Controller에서 View로 넘겨줄 데이터를 저장하는 객체입니다.
public class User { private String name; private String email; // Getter, Setter }
- ViewResolver:
- View 이름을 바탕으로 View 객체를 결정합니다.
- View(jsp, nexacro ,Thymeleaf 등이 여기 부분이 속함):
- 클라이언트에게 화면을 표시합니다. 예를 들어 JSP, Thymeleaf 등이 사용됩니다.
<%@ page contentType="text/html; charset=UTF-8" %> <html> <head> <title>사용자 목록</title> </head> <body> <h1>사용자 목록</h1> <ul> <c:forEach items="${users}" var="user"> <li>${user.name} (${user.email})</li> </c:forEach> </ul> </body> </html>
최종 스프링 동작흐름 도식화
_번외로 스프링 MVC 프로젝트의 기본 구조도 슬쩍 보자. 현재 내가 맡고 있는 시스템의 구조와 동일. 이것이 프레임워크의 힘!!_👍👍
스프링 MVC 프로젝트의 기본 구조 및 구동 과정
위 과정을 통해 스프링 MVC는 사용자 요청을 처리하고 응답을 반환합니다.
'TIL' 카테고리의 다른 글
꼭 알아야 하는 네트워크 지식 50분만에 기초 끝내기 특강 요약정리 (2) | 2024.12.26 |
---|---|
web/was 구분이유 / 퍼블리싱 / 앱에서 DB를 바로 붙이지 않는 이유 (0) | 2023.06.13 |
DB INDEX / 스키마(Schema) (0) | 2022.06.29 |
[TIL] Vue 정리 (0) | 2021.11.05 |
마크다운(MarkDown) 사용법 (0) | 2021.10.04 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스프링 동작흐름 #ioc #di #dispatcherservlet
- #web /was 구분이유
- 퍼블리싱 #앱에서 DB바로 안붙이는 이유
- 청년 버팀목 대출
- 부트스트랩 템플릿 사용시 충돌
- 왜 트랜스지방은 살 찜
- SSAFY 6기
- SQLD 후기
- java 김영한 강의 #2chapter
- Netlify #CICD
- 스프링 동작흐름
- safe operator
- Optinal Chaining
- 프로시저 #배치 #스케쥴러 #잡 #바인딩변수
- 코드리뷰 #클린코드
- 프로그래머스 네트워크
- JAVA설치 #JDK #JRE
- Property or method "" is not defined
- JAVA 코테
- vue 특징
- 나머지연산 분배법칙
- 알고리즘 나머지연산
- vue정리
- 버팀목 국민은행
- 원자 원소 분자 차이점
- 스프링 기본 구조
- Java
- Prim vs Dijkstra
- 자바 코테 유용한 함수
- git branch strategy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함