2012-07-10 129 views
0

我的應用程序是否正確與運行:春禁用上下文:組件掃描不檢測控制器

<context:component-scan base-package="com.mypackage"> </context:component-scan> 

當我通過手動bean定義不再被檢測到控制器更換此。

在任何情況下,我使用的這些註釋:

<context:annotation-config /> 
<mvc:annotation-driven /> 

控制器的自動裝配Autowired方法被調用,但豆類不聲明爲入口點,因此,404錯誤和無法訪問。

組件掃描背後的黑魔法是什麼?

控制器聲明那樣:

<?xml version="1.0" encoding="UTF-8"?> 

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 

    <!-- Controller configuration --> 
    <bean class="com.xx.ControllerClass" /> 

</beans> 
+0

如何用手動bean定義替換它?你是否定義了控制器? – axtavt 2012-07-10 17:20:20

+0

我只是定義bean。應該沒問題,不應該? – 2012-07-10 17:27:01

+0

你知道控制器也是豆嗎? – axtavt 2012-07-10 17:29:12

回答

2

投機根據您的意見 - 你已經宣佈了在的applicationContext-controllers.xml文件的控制器豆,現在是該文件中的Web應用程序上下文進口文件,您用DispatcherServlet的web.xml文件聲明一個:

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/applicationContext-controller.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

如果不是,那麼這可能是問題。對於基於Spring MVC的應用程序,通常有兩種不同的應用程序上下文:使用ContextLoaderListener(根Web應用程序上下文)聲明的應用程序上下文,以及通過DispatcherServlet聲明的與Web相關的bean,控制器,mvc:annotation-driven等需要位於Web相關Bean宣言。

+0

這就是解決方案。我認爲一切都在同一個環境中。謝謝。 – 2012-07-10 21:42:16