해결된 질문
작성
·
629
·
수정됨
0
안녕하세요. 항상 좋은 강의 감사합니다.
FrontController에서 어댑터들을 DI로 적용할 수 있다고 하셔서 이를 구현해보고자 하였습니다.
@WebServlet(name = "frontControllerServletV5", urlPatterns = "/front-controller/v5/*")
public class FrontControllerServletV5 extends HttpServlet {
...
@Autowired
private Map<String, Object> handlerMappingMap;
...
}
처음에 컬렉션 객체들을 Bean으로 등록하여 주입받고자 HandlerMappingConfig
클래스를 만들었습니다.
@Configuration
public class HandlerMappingConfig {
@Bean
public Map<String, Object> handlerMappingMap() {
Map<String, Object> handlerMappingMap = new HashMap<>();
// V2 Controller
handlerMappingMap.put("/front-controller/v5/v2/members/new-form",
new MemberFormControllerV2());
handlerMappingMap.put("/front-controller/v5/v2/members/save",
new MemberSaveControllerV2());
handlerMappingMap.put("/front-controller/v5/v2/members",
new MemberListControllerV2());
// V3 Controller & V4 Controller
...
return handlerMappingMap;
}
}
그리고 제대로 주입을 받았는지 테스트하기 위해 FrontControllerServletV5
클래스의 service()
메소드에서 handlerMappingMap
을 출력하도록 작성하였습니다.
@WebServlet(name = "frontControllerServletV5", urlPatterns = "/front-controller/v5/*")
public class FrontControllerServletV5 extends HttpServlet {
...
@Autowired
private Map<String, Object> handlerMappingMap;
...
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 정상적으로 주입되었는지 테스트하기 위해 출력
System.out.println("handlerMappingMap = " + handlerMappingMap);
...
}
}
서버를 실행시켜 확인해보니 아래 그림과 같이 handlerMappingMap
에 마치 컨테이너의 빈들이 다 들어온 것처럼 출력된 것을 확인할 수 있었습니다.
왜 이런 현상이 나타나는지 모르겠습니다. 혹시 타입이 Map<String, Object>
라 그런걸까요?
감사합니다.
아 그렇군요!
답변 달아주셔서 감사합니다...!!
한번 도전해 보겠습니다!!