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