본문 바로가기

Back End/Spring53

[Spring] 요청 매핑 핸들러 어뎁터의 구조 Argument Resolver 애노테이션 기반 컨트롤러를 처리하는 RequestMappingHandlerAdapter는 바로 이 ArgumentResolver를 호출해서 컨트롤러(핸들러)가 필요로 하는 다양한 파라미터의 값(객체)를 생성한다. 그리고 이렇게 파라미터의 값이 모두 준비되면 컨트롤러를 호출하면서 값을 넘겨준다. public interface HandlerMethodArgumentResolver { boolean supportsParameter(MethodParameter parameter); @Nullable Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, Native.. 2023. 8. 8.
[Spring] 스프링 MVC 기본 기능 @RestController @Controller 는 반환 값이 String 이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 뷰가 랜더링 된다. @RestController 는 반환 값으로 뷰를 찾는 것이 아니라, HTTP 메시지 바디에 바로 입력한다. 따라서 실행 결과로 ok 메세지를 받을 수 있다. @RequestMapping에 method 속성으로 HTTP 메서드를 지정하지 않으면 HTTP 메서드와는 무관하게 호출된다. /** * method 특정 HTTP 메서드 요청만 허용 * GET, HEAD, POST, PUT, PATCH, DELETE */ @RequestMapping(value = "/mapping-get-v1", method = RequestMethod.GET) public String m.. 2023. 8. 7.
[Spring] 로깅 logging 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다. 로깅 라이브러리 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)가 함께 포함된다. 스프링 부트 로깅 라이브러리는 기본으로 다음 로깅 라이브러리를 사용한다. SLF4J Logback 로그 선언 private Logger log = LoggerFactory.getLogger(getClass()); private static final Logger log = LoggerFactory.getLogger(Xxx.class) @Slf4j : 롬복 사용 가능 로그 호출 log.info(".. 2023. 8. 7.
[Spring] 스프링 MVC 구조 DispatcherServlet 구조를 살펴보자 DispatcherServlet도 부모 클래스에서 HttpServlet을 상속받아서 사용하고, 서블릿으로 동작한다. DispatcherServlet -> FrameworkServlet -> HttpServleBean -> HttpServlet 스프링 부트는 DispathcherServlet을 서블릿으로 자동 등록하면서 모든 경로를 "/"에 대해서 매핑한다. 하지만 더 자세한 경로의 우선순위가 높다. 요청 흐름 ✨✨✨ 서블릿이 호출되면 Httpservlet이 제공하는 service()가 호출된다. 스프링 MVC는 DispathcerServlet의 부모인 FrameworkServlet에서 service()를 오버라이드 해두었다. FrameworkServlet... 2023. 8. 7.