문제

방향을 따릅니다 스프링 소스 그리고 Book Spring In Action에서 XML 구성을 최소화하는 방식으로 Spring MVC를 설정하려고합니다. 그러나 Spring Source에 따르면 이것은 ControllerClassNameHandlerMap을 설정하는 방법입니다.

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

<bean id="viewShoppingCart" class="x.y.z.ViewShoppingCartController">
    <!-- inject dependencies as required... -->
</bean>

핸들러를 사용하여 콩을 수동으로 설정하는 것이 실제로 같은 양의 XML이므로 완전히 쓸모없는 것으로 저를 놀라게합니다.

이제 Book Spring in Action은 ControllerClassNameHandlerMpapping을 사용하기위한 코드 블록의 첫 번째 줄 뿐이며 훨씬 더 유용 할 것입니다. 그러나 나는 아직 이것을 작동시킬 수 없었습니다.

봄 경험이있는 사람이 나를 도와 줄 수 있습니까?

도움이 되었습니까?

해결책

실제로 여기에는 두 가지 다른 일이 있습니다.

  1. URL과 컨트롤러 간의 매핑
  2. 스프링 콩으로서 컨트롤러의 정의

#1의 경우, 컨트롤러 클래스 나임 핸드 랩핑을 수행 한대로 정의하면 URL-to-Controller 매핑을 처리합니다. 예, http://example.com/context/home -> HomeController

#2의 경우 컨트롤러 빈을 수행 한대로 정의 할 수 있습니다. 또는 @Controllers 및 자동 승리에 Spring 2.5 스타일 주석을 사용하는 경로를 따라 가면 XML Bean 정의가 필요하지 않습니다. 아니면 선택은 당신에게 달려 있습니다.

ControllerClassNameHandlerMpapping을 사용하여 피하는 것은 모든 잠재적 URL을 컨트롤러에 명시 적으로 매핑해야합니다. 우리는 이것을 성공적으로 사용했습니다.

사용하려는 또 다른 것은 DefaultRequestToviewnametranslator입니다.

<!-- Generates view names based on the request url (e.g. "/home.htm" => "home", "/user/list.htm" => "user/list", etc.) -->
<bean id="viewNameTranslator" class="org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator"/>

우리는 또한 URLBASEDVIEWRESOLVER를 사용합니다.

<!-- Maps view names to tiles view definitions files.  E.g., "home" => "home", etc.  -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
</bean>

다른 팁

ControllerClassNameHandlerMpapping을 사용하는 것이 컨트롤러 Java 클래스에서 리팩토링 작업을 수행하지 못하게하기 때문에 좋은 엔지니어링 관행이라고 생각하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top