问题标签 [component-scan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
11037 浏览

spring - ComponentScan 和 Autowired 不适用于依赖 Spring 项目?

我有两个项目 A 和 B。两个项目都是用 Maven 构建的,项目 A 对项目 B 有 Maven 依赖项。两个项目都有一个带有 @Configuration 注释的类,我在其中定义了 @Beans。

我在项目 A 中有 bean,来自两个项目。如果我在同一项目中定义的 bean 的项目 A 中使用 @Autowired 注释,则自动装配工作。但是,如果我在项目 B 的一个 bean 的项目 A 中使用 @Autowired 注释,我会得到一个异常。

这是什么意思?如何自动装配项目 B 中定义的项目 A 中的 bean?

0 投票
0 回答
364 浏览

java - 使用属性的 Spring 组件扫描不适用于多个基础包

我想读取一个变量,该变量保留要从属性文件中扫描的包名称:

这不适用于

也不与

知道如何从一个属性中读取多个基本包吗?

0 投票
1 回答
3159 浏览

java - Spring @ComponentScan 注释不起作用

我有带有包布局的 Spring Boot 应用程序示例:

如果放置,我的集成测试无法运行无法找到 ItemRepository bean

但如果我把

诀窍在哪里?

规格 说:

可以指定 basePackageClasses() 或 basePackages()(或其别名 value())来定义要扫描的特定包。如果未定义特定的包,则会从声明此注解的类的包中进行扫描。

0 投票
1 回答
391 浏览

spring - Spring Web 应用启动 - @ComponentScan - 应用上下文和 Web 上下文

我们的 Spring MVC Web 应用程序正在尝试遵循推荐的样式。它使用 AppContext( ContextLoaderListener) 来存储 DAO 和服务。它使用 WebAppContext ( DispatcherServlet) 来存储控制器。

DAO 对象同时进入AppContext和 WebAppContext。我不明白为什么。

AppContext 配置应该加载除控制器(以及将代码表加载到 ServletContext 中的类)之外的所有内容:

并且 Web 部件应该只加载控制器:

(上面的类在一个单独的包中,它是'blah'的兄弟;没有进行自我扫描)。

当然,控制器引用 DAO 对象。在 Controller 中,那些 DAO 对象是@Autowired.

我的期望是这些@AutowiredDAO 对象是从 AppContext 中检索的,而不是第二次创建,而是放置在 WebAppContext 中。但我认为它们是第二次被创造出来的。例如,此行在日志中出现两次,一次用于 AppContext,一次用于 WebAppContext:

我错过了什么吗?

就好像根上下文和 Web 上下文之间的父子关系丢失了。

0 投票
2 回答
111 浏览

spring - 如何在 Spring XML 配置中指定对两个不同的包执行组件扫描?

我在 Spring MVC 中很新,我有以下问题。

在我正在处理的应用程序中,我将 2 个控制器类声明到两个不同的包中。

所以我试图在我的 XML 配置中指定必须由组件扫描设置扫描的第二个包。

因此,如果我只有这个设置可以正常工作(但我只扫描一个包):

但是如果我尝试指定必须扫描两个不同的包,这样:

Eclipse 在第二个组件扫描设置标签上给我错误:

问题是什么?如何正确指定我必须扫描两个不同的包?我错过了什么?

0 投票
1 回答
287 浏览

java - 组件扫描找不到@Repository

我的课程看起来像这样:AbstractDAO

DAOImpl

应用程序上下文test.xml

测试类

这段代码不应该能够自动连接我的 itemDAO 吗?

当我运行我的测试时,它会抛出一个异常说

你能告诉我我错过了什么吗?我唯一能想到的是,由于我的测试在 src/test/java 中,我的 application-context-test.xml 在 src/test/resources 中,而我的 dao 在 src/main/java 中。也许组件扫描扫描在错误的地方?

0 投票
1 回答
2322 浏览

java - 如何在春季从组件扫描注释中排除测试文件夹

我有一个用于制作的 XML 文件和一个用于测试的 java conf 文件

在 Conf.java 中,我有一个 ClassA 的 bean 减速,我在测试中使用它作为

在我拥有的 xml 中<context:component-scan base-package="com.xx.*" />,问题在于此扫描也在扫描测试文件夹并识别出我有 2 个 ClassA 减速,一个在 XML 中,一个在 Conf.java 文件中。

是否可以排除对测试文件夹的扫描?

0 投票
2 回答
11560 浏览

java - Spring Boot 组件扫描包含单个类

我正在使用 spring 组件扫描来自动检测 bean:

问题是我希望扫描所有班级,com.org.x但我希望单独扫描一个com.org.y.SomeService.class班级com.org.y

我怎样才能做到这一点?

除了使用上下文扫描之外,我如何创建这个 bean 并注入应用程序上下文?

0 投票
1 回答
21789 浏览

spring - 组件扫描不扫描子包

我遇到了一个奇怪的问题。我的印象是,如果指定了顶级包进行扫描,组件扫描会递归地扫描子包。

我的存储库和实体是项目的 Maven 依赖项。它们位于包名 com.foo.bar.xyz 下,我的应用程序配置位于包 com.foo.bar 下。当我写@ComponentScan(basePackages = "com.foo.bar")时,@EnableJpaRepositories它会给出一个错误,即找不到存储库 bean。

但是,当我指定一个顶级存储库包时@EnableJpaRepositories(basePackages = com.foo.bar.xyz),连同上面的组件扫描,它检测到存储库就好了。

现在发生这种情况仅仅是因为存储库和实体被注入为 Maven 依赖项吗?那么组件扫描的递归部分,是扫描子包还是子目录呢?

0 投票
1 回答
1987 浏览

spring-boot - 从组件扫描中排除 @SpringBootApplication

我有两个类标记为@SpringBootApplication一个目录下:

@SpringBootApplicationannotation 包含@ComponentScan注解和@EnableAutoConfiguration注解。因此,这些类中的每一个都将另一个视为@Configurationbean。如何在FirstSpringBoodApplication使用配置文件的情况下从组件扫描中排除?SecondSpringBootApplication