2012-07-08 55 views
1

我正在創建一個Spring MVC Web應用程序,我喜歡使用控制器等組件的自動發現。Spring組件掃描不起作用?映射的URL返回404

在我的應用程序上下文文件,我把下面的標籤

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

有一個存在於com.example.springmvc.controller

@Controller 
public class AccountController { 

    @RequestMapping("/account.html") 
    public ModelMap showAccount() throws Exception { 

     ModelMap modelMap = new ModelMap(); 
     modelMap.addAttribute("someText", "This is an account"); 

     return modelMap; 
    } 

    @RequestMapping("/account.html") 
    public ModelMap showAccount(@RequestParam("accountId") int accountId) throws Exception  { 

     ModelMap modelMap = new ModelMap(); 
     modelMap.addAttribute("someText", String.format("This is an account with id %d", accountId)); 

     return modelMap; 
    } 

} 

當我轉到本地主機測試控制器: 8080/account.html我得到一個404,所以我必須忘記一些東西。

當我創建一個自定義映射在我的MVC配置文件,如下所示,比它的工作。至少,那麼我會在控制器中遇到一些有關隱形方法的錯誤,但這是另一個問題。至少它找到了控制器。

<bean name="/account.html" class="com.example.springmvc.controller.AccountController"/> 

我不想在XML創建我的映射,我想用註釋的URL映射。你能告訴我我在這裏忘了什麼嗎?

回答

3

要啓用基於註解配置掃描,添加以下Spring配置:

<mvc:annotation-driven /> 
+0

感謝阿龍,這個工程。 此外,要annyone閱讀:確保你有一個日誌框架,如log4j設置,以便您可以在應用程序啓動時看到發生了什麼。我在啓動我的應用程序時遇到了「SEVERE:Error listenerStart」錯誤,並且在配置log4j後我才發現問題所在。看起來,我第一次在我的applicationcontext文件中沒有正確的xsi:schemaLocation =值,所以沒有正確加載mvc XSD。其次,我的控制器中有一個錯誤的方法映射,導致應用程序無法正常啓動。 – Julius 2012-07-09 00:22:33