일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프록시
- beanfactory
- exception
- 자바
- 컴퓨터시스템
- String
- 클린코드
- gradle
- Immutable
- AutoConfiguration
- 메이븐
- 빌드툴
- ApplicationContext
- 링킹
- java
- Kotlin for Java Developers
- IOC
- DispatcherServlet
- DesignPattern
- FunctionalInterfaces
- 링커
- 토비의스프링3.1
- 토비의스프링
- springwebmvc
- ORM
- hibernate
- lambda
- Spring
- JPA
- springboot
- Today
- Total
목록springwebmvc (6)
엔지니어로 가는 길
@RequestParam 또는 @PathVariable로 들어온 값을 객체로 받으려면 Formatter가 필요하다. String 타입 변수 name을 갖는 Person 클래스가 있다. 컨트롤러에서 위와 같이 name을 String이 아니라 바로 Person 객체로 받고 싶다고 해보자. 테스트를 돌리면 MethodArgumentConversionNotSupportedException가 발생한다. 매우 직관적인 이름이다. 컨트롤러의 인자로 Person 타입을 받겠다고 했는데 실제로 주어진 것은 String 타입이었다. String이 Person으로 conversion되지 않아서 예외가 발생한 것이다. 이렇게 Formatter를 등록(spring boot는 Formatter를 따로 등록할 필요 없이 빈으로만 ..
1. WebApplicationContext를 찾아 DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE에 담는다. 2. locale resolving이 필요한 경우 locale resolver를 찾아 다른 elements들이 locale 정보를 이용하여 요청을 처리할 수 있도록 한다. locale resolving이 필요하지 않다면 locale resolver는 필요없다. 3. theme resolving이 필요한 경우 theme resolver를 찾아 뷰와 같은 elements가 어떤 theme을 사용할지 결정할 수 있도록 한다. theme를 사용하지 않는다면 무시할 수 있다. 4. If you specify a multipart file resolver, th..
여기서는 DispatcherServlet이 위임하는 특별한 빈들이 어떻게 설정되는지에 대해 알아본다. 먼저 DispatcherServlet은 WebApplicationContext에 가서 도움을 요청할 '특별한 빈'이 등록되어있는지 확인한다. 만약 등록되어 있으면 해당 빈을 특별한 빈으로 설정하고, 등록되어 있지 않으면 DispatcherServlet.properties에서 설정한 디폴트 타입의 빈을 이용한다. DispatcherServlet.properties에 설정된 default 빈들을 보면 아래와 같다. HandlerMapping BeanNameUrlHandlerMapping RequestMappingHandlerMapping RouterFunctionMapping HandlerAdapter Ht..
이전 시간에 DispatcherServlet이 Spring Web MVC에서 front controller의 역할을 함을 배웠다. 즉, DispatcherServlet은 문지기가 되어 가장 앞에서 모든 요청(request)을 받은 다음 각각의 요청을 적재적소에 위임한다. 여기서 적재적소라 함은 특정한 빈(Bean)을 말한다. DispacherServlet이 요청을 위임하는 각각의 빈은 해당 요청을 잘 처리할 수 있도록 만들어진 객체이다. 프레임워크의 contracts(내장되어 있는 contracts)를 구현하지만 원한다면 우리의 입맛대로 커스터마이즈할 수 있다. 오늘은 DispatcherServlet이 감지하는 Bean(정확히는 Bean의 타입 즉, 인터페이스)에 대해 알아 볼 것이다. 다시 말해 어떤 ..
이 글에서는 Spring Web MVC의 context에 대해 알아볼 것이다. WebApplicationContext? ApplicationContext? ServletContext? 먼저 Context들을 정리하는 게 좋을 것 같다. ApplicationContext는 Spring에서 만든 인터페이스로 말그대로 애플리케이션에 대한 context를 가지고 있다. WebApplicationContext란 Spring의 ApplicationContext를 확장한 인터페이스로, 웹 애플리케이션에서 필요한 몇 가지 기능을 추가한 인터페이스다. 예를 들면 WebApplicationContext의 구현체는 getServletContext라는 메소드를 통해 ServletContext를 얻을 수 있다. ServletC..
이 글에서는 DispatcherServlet에 대해 알아볼 것이다. DispatcherServlet Spring MVC는 다른 웹 프레임워크와 마찬가지로 front controller(?) 패턴으로 설계되었다. DispatcherServlet란 Spring MVC에서의 front controller 역할을 하는 서블릿이다. 즉, DispatcherServlet이라는 서블릿이 전면에서 모든 요청을 받은 뒤 각각의 요청을 처리하는 적절한 곳으로 뿌려준다. (front controller(!) 패턴이란 문지기를 세워 모든 요청이 문지기를 통해서 전달되도록 설계하는 방법이다.) DispatcherServlet도 하나의 서블릿이다. 따라서 다른 어떤 서블릿과 마찬가지로, 자바 설정이나 web.xml에 있는 설정에..