2011-04-14 178 views
1

這可能是微不足道的。但我沒有得到任何有關這方面的信息。使用註釋來實現Spring MVC控制器以及實現控制器

我們是否可以在同一個Web應用程序中有一個註釋的Controller實現類和一個實現Controller接口(或擴展AbstractController)的Controller實現類?

如果是這樣做的話。

我試着寫了下面的Spring上下文,但實現控制器類是從來沒有加載

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:lang="http://www.springframework.org/schema/lang" 
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.0.xsd 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 



    <bean name="/home.htm" class="com.dell.library.web.HomePageController"> 
     <property name="library" ref="library" /> 
    </bean> 

    <context:component-scan base-package="com.dell.library.web.anot" /> 
    <mvc:annotation-driven /> 

    <bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix"> 
      <value>/WEB-INF/jsp/</value> 
     </property> 
     <property name="suffix"> 
      <value>.jsp</value> 
     </property> 
    </bean> 

</beans> 

在我的情況是從來沒有加載HomePageController。 這是正確的方法嗎?

感謝 丹努什

回答

3

<mvc:annotation-driven>有效地禁止舊控制器。你需要通過聲明

<bean class = "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> 
<bean class = "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> 

,使他們UPDATE:的DispatcherServlet功能是通過sevaral種策略類的控制。特別是,HandlerMapping定義了將URL映射到控制器上的方法,並且HandlerAdapter定義了執行特定控制器調用的方式。

因此,上面的代碼聲明瞭將URL映射到bean名稱並調用Controller類的策略。實際上,默認情況下,策略是啓用的,但只有在沒有明確聲明其他策略的情況下。由於<mvc:annotation-driven>明確聲明瞭自己的策略,因此您還需要明確聲明這些bean。

另請參閱DispatcherServlet javadoc

+0

謝謝。那工作。這兩個條目在這種情況下做了什麼? – 2011-04-14 09:00:55

+0

@dhanush:更新。 – axtavt 2011-04-14 09:11:34

+0

我討厭接受0 upvotes的答案:) – Bozho 2011-04-18 08:47:50