2013-10-20 52 views
2

彈簧組件掃描找不到軟件包。我認爲我的項目目錄存在問題。我正在使用Intellij Idea。彈簧組件掃描找不到軟件包

我的applicationContext.xml

<?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:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
<context:component-scan base-package="" /> 

我的目錄;

enter image description here

+0

請你詳細說明你的問題,如果它返回任何異常意味着在啓動服務器則可能是jar文件的問題好心加上「彈簧上下文3.0.3.RELEASE」罐子和嘗試它。如果它不找到註釋爲@controller的控制器,然後使用「「上下文註解配置標籤。 –

回答

2

順便說一句,你的Maven項目結構不正確,這就是爲什麼的IntelliJ顯示您的Java包爲常規目錄。根據Maven standard directory layout,您需要創建src/main/java。所以,你的項目結構應該是這樣的: -

src 
|- main 
    |- java 
     |- tr 
      |- source 
      |- beans 
    |- resources 
    |- webapps 
     |- ... 

現在,當您創建src/main/java,會的IntelliJ治療java目錄作爲一個普通的目錄(顯示爲橙色目錄圖標)。要使其成爲源目錄(藍色目錄圖標),請轉到IntelliJ的項目結構並添加java目錄作爲源目錄。你應該看到這樣的事情: -

enter image description here

一旦src/main/java變成藍色目錄圖標,假設你要掃描的基礎包是tr,去你的Spring XML配置和改變這一行這樣的: -

<context:component-scan base-package="tr"/> 
+0

感謝您的建議 – hellzone

1

類路徑包的掃描需要在類路徑對應的目錄條目的存在。並autodetectbeans並註冊相應的豆類需要的

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

列入其中base-package將用於類的包。因此,爲了找到包tr.source定義豆類和它的子包,您需要定義base-package爲:

<context:component-scan base-package="main.tr.source"/> 
+0

正如我所說它無法找到「tr.source」或「src.main.tr.source」或「main.tr.source」。 – hellzone

+1

當你說它找不到時,是否在訪問bean時拋出任何異常? –

+1

我找到了解決方案。 「main.tr.source」不是一個包,而是一個目錄。當我創建「新包」而不是「新目錄」時它工作正常。但我仍然不知道它們之間的區別。感謝您的幫助。 – hellzone