코딩항해기
[Spring] springframework.HandlerMapping 구조 본문
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
DispatcherServlet이 의존성을 가지고 있는 두 가지 객체 중 하나인 HandlerMapping은 팩토리 패턴을 지킬 수 있도록 new를 줄여주고 호출 시 해당 객체를 반환해주는 역할을 한다.
DispatcherServlet xml에 태그로 정의할 수 있는데, 이러한 구조를 가진다.
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<!--실습용은 SI로 주입-->
<property name="mappings">
<props>
<!--<prop key="키 값 ">밸류 값</prop>-->
<prop key="/login.do">login</prop>
<prop key="/main.do">main</prop>
</props>
</property>
</bean>
<bean class="com.koreait.app.view.member.LoginController" id="login"/>
<bean class="com.koreait.app.view.member.MainController" id="main"/>
이 구조를 java Class로 풀어보면 JSP 기반 프로젝트에서 사용했던 HandlerMapper와 동일한 형태가 된다.
public class HandlerMapping {
private Map<String, Controller> mappings;
//싱글톤을 유지할 수 있도록 미리 객체를 생성해 필요할 때마다 생성된 객체를 반환
//팩토리 패턴을 지킨 사례 (new 절약)
public HandlerMapping() {
this.mappings = new HashMap<String, Controller>();
this.mappings.put("/login.do", new LoginController());
this.mappings.put("/main.do", new MainController());
}
//요청에 따라 객체를 반환
public Controller getController(String command) {
return mappings.get(command);
}
}
Spring에서는 직접 만들지 않고 Springframework에서 제공하는 HandlerMapping을 사용한다는 차이를 가지고 있다.
'Spring' 카테고리의 다른 글
[Spring] springframework.DispatcherServlet 구조 (0) | 2024.10.07 |
---|---|
[Spring] springframework.Controller interface 구조 (0) | 2024.10.07 |
[리뷰/우아한테크] Spring vs Spring Boot (0) | 2024.10.06 |
[Spring] @어노테이션 의존성 주입 (Repository, Service, Controller) (0) | 2024.10.04 |
[Spring] @어노테이션 의존성 주입 (Component, Autowired, Qualifier) (0) | 2024.10.04 |