5

Spring component-scan 找不到包。我认为我的项目目录有问题。我正在使用 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="" />

我的目录;

在此处输入图像描述

4

2 回答 2

6

顺便说一句,您的 Maven 项目结构不正确,这就是 IntelliJ 将您的 Java 包显示为常规目录的原因。基于Maven 标准的目录布局,您需要创建src/main/java. 因此,您的项目结构应如下所示:-

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

现在,当您创建 时src/main/java,IntelliJ 会将java目录视为常规目录(显示为橙色目录图标)。要使其成为源目录(蓝色目录图标),请转到 IntelliJ 的项目结构并将java目录添加为源目录。你应该看到这样的东西:-

在此处输入图像描述

一旦src/main/java变成蓝色目录图标,假设您要扫描的基本包是tr,请转到您的 Spring XML 配置并将此行更改为:-

 <context:component-scan base-package="tr"/>
于 2013-10-20T13:38:27.203 回答
1

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

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

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

<context:component-scan base-package="main.tr.source"/>
于 2013-10-20T11:40:08.983 回答