본문 바로가기
Study/Spring Boot

[Spring Boot] Spring Boot 동작 구조

by DevJaewoo 2022. 2. 12.
반응형

Spring LOGO

Intro

Spring Framework는 주로 MVC 패턴으로 개발됩니다.

MVC 패턴은 각각 Model, View, Controller란 뜻으로, 이 3가지의 요소가 서로 역할을 분담하여 요청을 처리하는 구조입니다.

이때 클라이언트가 요청하는 페이지에 따라 정적 컨텐츠동적 컨텐츠로 나뉩니다.


동적 컨텐츠 처리 구조

클라이언트가 요청하는 URL을 받아오고 싶을 때 아래와 같이 Controller를 정의합니다.

 

HelloController.java

@Controller
public class HelloController {
    @GetMapping("hello")
    public String hello(Model model) {
        model.addAttribute("data", "hello!!");
        return "hello";
    }
}

 

이렇게 컨트롤러를 정의한 후 사용자가 localhost:8080/hello 페이지를 요청하면

내장 톰캣 서버에서 스프링 컨테이너에 hello 페이지 관련 Controller를 요청합니다.

만약 Controller가 있을 경우 해당 Controller가 요청을 받아(@GetMapping("hello"))

model을 가공(model.addAttribute)하고, HTML 파일 경로를 viewResolver에 전달(return "hello")합니다.

그 후에 viewResolverresources/templates 폴더에서 전달받은 model을 가공하여 HTML 파일을 변환시키고, 사용자의 브라우저로 넘겨줍니다.

동적 컨텐츠 처리 구조


정적 컨텐츠 처리 구조

정적 컨텐츠는 사용자가 요청한 URL을 처리할 컨트롤러가 없을 경우 표시됩니다.

정적 컨텐츠 처리 구조

사용자가 localhost:8080/hello-static.html 페이지를 요청하면 내장 톰캣 서버에서 해당 페이지를 처리할 컨트롤러를 찾습니다.

하지만 이전과는 달리 지금은 아무런 컨트롤러도 정의되지 않았습니다.

이런 경우 내장 톰캣 서버가 resources/static 폴더에서 사용자가 요청한 페이지와 일치하는 HTML 파일을 찾아서 보여줍니다.


출처

반응형