3

Spring Source과 Spring Action in Book의 지침에 따라 xml 구성을 최소화하는 방식으로 Spring MVC를 설정하려고합니다. 당신이 거의 동일 그대로, 그냥 수동으로 콩을 설정하는 핸들러를 사용하는 것이 실제로 간단로, 완전히 쓸모있는 나를 치는 ControllerClassNameHandlerMapControllerClassNameHandlerMapping을 사용하는 Spring MVC를 통한 컨벤션에 대한 협약?

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

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

을 설정하는 방법 그러나 스프링 소스에 따라입니다 XML의 양.

이제 Spring in Action이라는 책에서 ControllerClassNameHandlerMapping을 사용하는 코드 블록의 첫 번째 줄이 훨씬 더 유용 할 것입니다. 그러나, 나는 아직 이것을 작동시킬 수 없었다.

스프링 경험이있는 사람이면 누구나 나를 도와 줄 수 있습니까?

답변

8

실제로 다른 두 가지 여기가 진행됩니다

  1. URL과 컨트롤러
  2. 봄 콩 # 1의 경우

, 당신은을 정의하면 같은 컨트롤러의 정의 사이의 매핑 ControllerClassNameHandlerMapping은 URL에서 컨트롤러로의 매핑을 처리합니다. 예 : http://example.com/context/home -> HomeController

# 2의 경우 컨트롤러 빈을 정의 할 수 있습니다. 또는 @Controller와 Auto-wiring에 Spring 2.5 스타일의 주석을 사용하는 경로를 따라 가면 XML 빈 정의가 필요 없다. 또는 선택의 여지가 당신에게 달렸습니다.

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

사용할 수있는 또 한가지가 된 DefaultRequestToViewNameTranslator이다 : 우리는 또한하는 UrlBasedViewResolver 사용

<!-- 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"/> 

:

<!-- 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> 
+0

응답 Jeff에게 감사드립니다. 내가 지금 성취하고자하는 것은 지금 당장 # 1이지만 추가 bean 정의가 없으면 내 URL 중 아무 것도 내 컨트롤러에 매핑되지 않습니다. –

+0

그렇습니다. Spring bean을 만들지 않는 한 Spring은 컨트롤러에 대해 알지 못하기 때문입니다. def 또는 주석을 사용하여이 작업을 수행 할 수 있습니다. –

+0

@Controller 주석이 있어도 작동하지 않지만 구성에서 누락 된 부분이있을 수 있습니다. –

0

나는 ControllerClassNameHandlerMapping 좋은 공학 연습 사용하여 생각하지 않는다를, 같은 컨트롤러 자바 클래스에서 리팩토링 작업을 수행하지 못하게합니다.

+0

컨벤션보다 컨벤션 방식을 선호합니다. 단지 선호도에 불과합니다. 나는 그것이 리팩토링을 방해한다는 것에 동의하지 않는다.보기와 컨트롤러 및 구성을 동기화 된 상태로 유지해야하는 구성 방법에 비해보기와 컨트롤러 이름을 동기화해야한다. –