KOSA Spring - pom과 Spring MVC 흐름

채정윤·2025년 4월 17일

Spring

목록 보기
3/25

pom.xml

pom.xml은 Maven 프로젝트에서 프로젝트의 설정과 의존성을 관리하는 XML 파일

주요 역할

  • 📦 의존성 관리: 사용할 외부 라이브러리를 정의 (예: Spring, MySQL 등)
  • 🔧 빌드 설정: 컴파일, 테스트, 패키징 방식 지정
  • 🏷️ 프로젝트 정보: 이름, 버전, 개발자 등 메타데이터 포함
  • 📁 플러그인 설정: 빌드 도구나 리포트 생성 도구 등 추가 기능 정의

🌱 Spring MVC 흐름


💡 먼저, Spring MVC 구조 한눈에 보기

[사용자 브라우저]
     ↓ (1)
[DispatcherServlet]  ← 핵심 컨트롤 타워!
     ↓ (2)
[Controller] → (3) → [Service] → (4) → [Repository] → (5) → [DB]
     ↑                               ↓
     ←----------- (6) -------------←
     ↓ (7)
[ViewResolver → View] (HTML 생성)
     ↓ (8)
[브라우저 응답]

1. 사용자 요청

🧍‍♀️ 사용자가 웹사이트에서 버튼을 누르거나, 주소창에 /books/1 같은 URL을 입력해요.

📩 예:

GET http://내사이트.com/books/1

2. DispatcherServlet이 요청을 받음

📌 DispatcherServletSpring MVC의 중심 관리자예요.

어떤 Controller가 이 요청을 처리할지 찾아줘요.

📦 비유: 마치 프론트 데스크 직원이 손님을 적절한 부서로 연결해주는 느낌!


3. 적절한 Controller로 연결

📌 요청에 맞는 Controller 메서드로 연결해요.

예:

@GetMapping("/books/{id}")
public String getBook(@PathVariable Long id, Model model) {
    Book book = bookService.getBookById(id);
    model.addAttribute("book", book);
    return "book_detail";
}

📦 비유: "책 1번 정보를 보여달라고요? 알겠습니다!" 하고 Controller가 Service에게 말해요.


4. Service가 비즈니스 로직 처리

즉, 비즈니스로직을 처리하는 클래스로 간다!!

📌 Controller는 직접 DB를 다루지 않고, Service에게 일을 맡겨요.

예:

public Book getBookById(Long id) {
    return bookRepository.findById(id).orElseThrow();
}

📦 비유: Controller는 주문만 받고, 실제 요리는 주방장(Service)이 해요.


5. Repository가 DB와 연결

📌 Repository는 진짜 DB랑 연결되어 있고, 데이터를 가져오거나 저장해요.

예:

Optional<Book> findById(Long id);

📦 비유: 주방장(Service)이 저장고(DB)에서 필요한 재료를 꺼내오는 단계.


6. 데이터가 거꾸로 다시 올라옴

  • DB에서 책 데이터를 찾았으면,
    → Repository → Service → Controller로 다시 전달돼요.

7. View 이름 리턴 → ViewResolver가 뷰 찾음

📌 Controller는 HTML 템플릿 이름을 반환해요 ("book_detail").

Spring의 ViewResolver가 그 이름에 해당하는 파일을 찾아요.

JavaConfig 클래스 사용 예:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Bean
    public InternalResourceViewResolver viewResolver() {
        // ViewResolver 설정
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        
        // 뷰의 접두사와 접미사를 지정
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        
        return resolver;
    }
}

8. 사용자에게 응답

📌 View 템플릿에 데이터를 넣어 HTML로 만들고,

브라우저에게 보여줘요.

📄 예:

<h1>${book.title}</h1>
<p>저자: ${book.author}</p>

브라우저에 이런 결과가 나타나요:

MVC 쉽게 배우기
저자: 홍길동

🎯 Spring MVC 전체 흐름 요약

  1. 사용자 요청: /books/1
  2. DispatcherServlet이 요청 수신
  3. 적절한 Controller 호출
  4. Service가 비즈니스 로직 수행
  5. Repository가 DB에서 데이터 가져옴
  6. 데이터를 View에 전달
  7. ViewResolver가 HTML 생성
  8. 사용자에게 응답

🔁 쉽게 외우는 Spring MVC 흐름

요청 → 디스패처 → 컨트롤러 → 서비스 → 리포지토리 → DB → 다시 올라와서 → 뷰 → 응답

📦 간단 비유로 마무리

역할비유
DispatcherServlet프론트 데스크
Controller주문 받는 점원
Service주방장
Repository재료 창고 관리자
View완성된 요리 (화면)
사용자손님 (브라우저)

0개의 댓글