MVC

스프링부트 어플리케이션 실행 시 뜨는 로그 분석추가한 의존성Spring Web:  가장 기본적으로 Spring MVC 기반의 REST API 혹은 웹 페이지 반환을 위한 Tomcat서버Lombok: 불 필요한 Java 코드 작성을 최소화하기 위한 어노테이션 기반 코드 자동 생성기Thymeleaf: Spring 에서 웹 페이지를 만들어 클라이언트에게 서빙하려 사용하는 서버사이드 템플릿 엔진 Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext (2가지 존재)Servlet (Web) Applicationcontext: 서블릿에서만 이용되는 Bean 에 대한 ContextDispatcherServlet이 직접 사용하는 컨트롤러..
API 예시 회원 관리를 HTTP API로 만든다 생각하고 매핑을 어떻게 하는지 알아보자. 회원 관리 API 회원 목록 조회: GET → /users 회원 등록: POST → /users 회원 조회: GET → /users/{userId} 회원 수정: PATCH → /users/{userId} 회원 삭제: DELETE → /users/{userId} @RestController @RequestMapping("/mapping/users") public class MappingClassController { @GetMapping public String user() { return "get users"; } @PostMapping public String addUser() { return "post user..
요청 매핑 요청이 왔을 때 컨트롤러와 매핑해 주는 것 @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); /** * 기본 요청 * 둘다 허용 /hello-basic, /hello-basic/ * HTTP 메서드 모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE */ @RequestMapping("/hello-basic") public String helloBasic() { return "ok"; } } @RestController @RestController 는 반환 값으로 뷰를 찾는 것이 아니라, HTTP 메시지 바디에 바로 입력한다. @R..
@Component //컴포넌트 스캔을 통해 스프링 빈으로 등록 @RequestMapping public class SpringMemberFormControllerV1 { @RequestMapping("/springmvc/v1/members/new-form") public ModelAndView process() { return new ModelAndView("new-form"); } } 컴포넌트 스캔 없이 스프링 빈으로 직접 등록해도 동작 가능하지만 컴포넌트 스캔을 주로 이용한다 데이터 저장 ModelAndView를 통해 Model 데이터를 추가하자 @Controller public class SpringMemberSaveControllerV1 { private MemberRepository membe..
직접 만든 MVC 프레임워크 구조 vs. SpringMVC 구조 Spring MVC 동작 순서 DispacherServlet.doDispatch() 코드를 분석하면 MVC 동작이 보인다. DispacherServlet을 서블릿으로 등록하고 모든 경로(urlPatterns="/")에 대해서 매핑된다. 핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다. 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다. 핸들러 어댑터 실행: 핸들러 어댑터를 실행한다. 핸들러 실행: 핸들러 어댑터가 핸들러를 실행한다. ModelAndView 반환: 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다. viewResolver 호출: 뷰 리졸..