Java Spring配置:组件扫描

Java Spring配置:组件扫描,java,eclipse,spring,Java,Eclipse,Spring,我找不到关于beans xml配置的文档,所以我在这里问:在 在概念上与Java中的包相同吗 例如,在我的src/main/java(Eclipse中的project explorer视图,平面包演示)中,假设我有4个包com.amazon、com.amazon.entities、com.amazon.services、com.amazon.repositories。在Navigator视图中,我只有“amazon”文件夹,其中有3个文件夹(实体、存储库、服务)和一个java类MyClass

我找不到关于beans xml配置的文档,所以我在这里问:在


在概念上与Java中的包相同吗

例如,在我的src/main/java(Eclipse中的project explorer视图,平面包演示)中,假设我有4个包com.amazon、com.amazon.entities、com.amazon.services、com.amazon.repositories。在Navigator视图中,我只有“amazon”文件夹,其中有3个文件夹(实体、存储库、服务)和一个java类MyClass.java。所以,如果我写“context:component scan base package=“com.amazon”,将扫描什么?只是MyClass.java,还是子文件夹(实体、存储库、服务)中的所有内容

如果您这样写:

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

然后,将扫描
com.amazon
包及其所有子包(
com.amazon.repositories
com.amazon.services
等)中的所有内容


这里的相关部分是类的实际包,而不是IDE显示层次结构的方式。

但是com.amazon.services中的java类将具有声明“package com.amazon.services”,这与“com.amazon”包完全不同?那么,为什么要对它们进行扫描呢?或者搜索是通过“amazon”文件夹中的文件系统进行的?我提到过扫描也会针对基本包的子包进行。因此,如果类位于
com.amazon.services
包中,则该包是
com.amazon
的子包,因此将被扫描。说java中没有子包这样的东西。这些包共享的唯一东西是名称空间,即“import com.amazon.*”将导入com.amazon和3个“子包”中的每个类。但除此之外,它们是不相关的,不是吗?根据Java编译器,Java中的包实际上并不是分层的,但人们总是这样对待它们,Spring框架也这样做。
<context:component-scan base-package="com.amazon" />