spring component-scan找不到包

时间:2013-10-20 11:30:34

标签: spring

Spring组件扫描无法找到包。我认为我的项目目录存在问题。我正在使用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

2 个答案:

答案 0 :(得分:2)

顺便说一下,你的Maven项目结构不正确,这就是IntelliJ将你的Java包显示为常规目录的原因。根据{{​​3}},您需要创建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"/>

答案 1 :(得分:1)

扫描类路径包需要在类路径中存在相应的目录条目。并autodetect beans并注册相应的bean需要包含

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

其中base-package将是类的包。因此,为了找到包tr.source及其子包中定义的bean,您需要将base-package定义为:

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