【问题标题】:Spring configuration: component-scanSpring配置:组件扫描
【发布时间】:2015-01-13 15:44:36
【问题描述】:

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

中执行“基础包”
<context:component-scan base-package="" /> 

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

例如,在我的 src/main/java(Eclipse 中的项目资源管理器视图,平面包演示)中,假设我有 4 个包 com.amazon、com.amazon.entities、com.amazon.services、com.amazon。存储库。在导航器视图中,我只有“amazon”文件夹,里面有 3 个文件夹(实体、存储库、服务)和一个 java 类 MyClass.java。所以如果我写“context:component-scan base-package="com.amazon"”,会扫描什么?只是 MyClass.java,还是子文件夹中的所有内容(实体、存储库、服务)?

【问题讨论】:

    标签: java eclipse spring


    【解决方案1】:

    如果你这样写:

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

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

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

    【讨论】:

    • 但是 com.amazon.services 中的 java 类会声明与“com.amazon”包完全不同的“package com.amazon.services”?那么为什么要扫描它们呢?还是通过“amazon”文件夹内的文件系统进行搜索?
    • 我提到扫描也发生在您的基本包的子包中。因此,如果一个类在 com.amazon.services 包中,则该包是 com.amazon 的子包,因此将被扫描。
    • stackoverflow.com/questions/13809713/java-package-in-package 表示java中没有子包这样的东西。这些包唯一共享的是命名空间,即“import com.amazon.*”将导入 com.amazon 和 3 个“子包”中的每个类。但除此之外,它们是不相关的,不是吗?
    • 根据 Java 编译器,Java 中的包实际上并不是分层的,但人们经常这样对待它们,Spring 框架也是如此。
    猜你喜欢
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2014-09-13
    相关资源
    最近更新 更多