스프링 부트의 스프링 MVC 설정 handlerMappings SimpleUrlHandlerMapping 파비콘 요청을 처리해주는 mapping RequestMappingHandlerMapping 애노테이션 기반의 MVC를 mapping order : 0 BeanNameUrlHandlerMapping SimpleUrlHandlerMapping resourceHandlerMapping src/main/resources/static 디렉토리 안에 들어있는 static한 리소스들에 캐싱 관련된 정보들이 추가된다. Ex. 리소스 변경이 이루어지지 않을 시 not modified라는 응답(304)을 보내, 브라우저가 캐싱하고 있는 리소스를 그대로 사용할 수 있도록 처리해준다. 스프링 부트가 설정해놓은 static..
WebMvcConfigurer 인터페이스 //0. 애플리케이션 컨텍스트 설정 public class WebApplication implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletContext) throws ServletException { AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); context.setServletContext(servletContext); context.register(WebConfig.class); context.refresh(); Dispatche..
@EnableWebMvc 애노테이션 기반 스프링 MVC를 사용할 때 편리한 웹 MVC 기본 설정 @Configuration @ComponentScan @EnableWebMvc public class WebConfig { } DispatcherServlet의 기본적인 전략과 @EnableWebMvc 사용 시 handlerMapping, handlerAdapter, viewResolver를 확인 DispatcherServlet 기본적인 전략 handlerMappings BeanNameUrlHandlerMapping(url 기반으로 매핑 처리) order = 매우 낮은 우선 순위 RequestMappingHandlerMapping interceptors : size = 0; order = 매우 낮은 우선 순위..
스프링 MVC구성 요소 직접 빈으로 등록하기 스프링 기본 전략 스프링은 기본적인 설정이 없어도 스프링이 제공해주는 DispatcherServlet.propeties를 통해 기본 전략을 사용하고 있다. org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver org.springframework.web.servlet.HandlerMapping=org.springframework.web.s..
스프링 부트를 활용한 MVC 동작 SpringBoot Main @SpringBootApplication public class DemoSpringMvcApplication { public static void main(String [] args) { SpringApplication.run(DemoSpringMvcApplication.class); } } Controller @Controller public class EventController { @Autowired EventService eventService; @GetMapping("/events") public String events(Model model) { model.addAttribute("events", eventService.getEve..
DispatcherServlet의 ViewResolver DispatcherServlet 동작과정에서 viewResolver의 과정을 살펴보자 //DispatcherServlet.class protected void initStrategies(ApplicationContext context) { ... //0. init은 최초의 서블릿을 initializer할 때만 접근한다. this.initViewResolvers(context); ... } private void initViewResolvers(ApplicationContext context) { this.viewResolvers = null; if (this.detectAllViewResolvers) { //1. viewResolver 타입을 모두..
View가 포함된 DispatcherServlet 동작원리 //Controller @Controller public class HelloController { @GetMapping("/sample") public String sample() { return "/WEB-INF/sample.jsp"; } } 먼저 Localhost:8080/app/sample로 접속 HandlerMapping RequestMappingHandlerMapping BeanNameUrlHandlerMapping HandlerAdapter RequestMappingHandlerAdapter SimpleControllerHandlerAdapter ReturnValueHandlers ModelAndView가 Null일 경우(메소드에 @..
DispatcherServlet 초기화 HandlerMapping : 핸들러를 찾아주는 인터페이스 HandlerAdapter : 핸들러를 실행하는 인터페이스 ReturnValueHandlers : return 값을 http 본문에 넣어주는 핸들러 HandlerMapping url에 해당하는 handler를 찾는 인터페이스 찾는 핸들러 : RequestMappingHandlerMapping //DispatcherServlet.class @Nullable protected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception { if (this.handlerMappings != null) { Iterator var2 = t..
- Total
- Today
- Yesterday
- jdk버전
- try with resources
- 이펙티브 자바
- mustache
- 정적팩터리메서드
- 인프런
- junit
- 연관관계
- flatMap
- 생성자
- try catch finally
- java
- 김영한
- effectivejava
- springboot
- 스프링부트
- java8
- 팩토리 메소드 패턴
- 이펙티브자바
- 자바8
- Spring
- 점층적 생성 패턴
- package-private
- 복사 팩토리
- ifPresent
- Effective Java
- JPA
- 빌더 패턴
- @Lazy
- 빈 순환 참조
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |