问题标签 [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 投票
2 回答
3439 浏览

java - 春季启动 @ComponentScan 与 @Import

我和我的朋友讨论过@ComponentScan@Import。哪一个更好?我们有两个不同的想法。

  1. @ComponentScan:易于使用,从组件扫描中导入所有bean。
  2. @Import:你需要知道你要使用什么组件,不需要扫描所有。

你的想法怎么样?哪一个更适合您使用?

谢谢!

0 投票
1 回答
505 浏览

java - 如何查看@ComponentScan 扫描的类路径列表以解决 NoSuchBeanDefinitionException

在 Spring boot 1.5.9 应用程序中,我有@SpringBootApplication我的主类。

我也有@KopaxgroupApi注释,带有:

存在KopaxgroupApiConfig.class

我已经在其中创建了一个新项目,com.kopaxgroup.api.customerManagement.callMeBack并且我将存储库和服务分别存储在目录repositoryservice.

CallMeBackServiceImpl找不到CallMeBackRepository. _

我在启动时遇到以下错误:

我试图搬进CallMeBackRepositorycom.kopaxgroup.api.customerManagement.callMeBack.service.impl,但错误仍然存​​在。

我有一些类似的软件包,它们都可以启动,我看不出配置有什么不同。

创建新 jar 时会发生这种情况。

我已经添加了一堆@ComponentScan但我无法解决它,我怎样才能进一步挖掘并查看期间使用的类路径列表@ComponentScan("com.kopaxgroup.api")

0 投票
2 回答
1918 浏览

java - 使用 @ComponentScan 进行元注释的 Spring 自定义 @Enable 注释

我正在尝试为 Spring 框架编写自己的@Enable注释,应按如下方式使用:

我使用自定义注释跟随组件扫描,但这带来了一些限制:

  1. 我无法使基础包属性动态化,即无法通过"com.example.package.base",但需要在配置时预先定义包。

    我看了看@AliasFor,但无法让它工作。

  2. 当我省略基本包时,扫描从注释的定义包开始,而不是从注释类的包开始。在上面的示例中,它只会为 中的类扫描和创建 bean com.example.annotations,而不会为com.example.package.*.

    我查看EntityScanPackages.Registrar.class了注解中导入了哪个@EntityScan,但它是一个内部类,我的注解无法导入。

如果我上课,一切正常@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, value = MyAnnotation.class))MyApplication但当它移动到@EnableCustom. 如何告诉 Spring Framework 将其视为使用某些默认值@EnableCustom指定的不同方式。@ComponentScan我尝试使用 和其他人对我的注释进行元注释@Configuration@Component但无济于事:

我在哪里可以找到这方面的文档或您会推荐什么起点?我的长期目标是拥有一个可供众多项目使用的 Spring Boot 启动器。


AM(N)WE 可以在以下存储库中找到:https ://github.com/knittl/stackoverflow/tree/spring-enable-annotation

以下是包结构的概要:

0 投票
0 回答
174 浏览

java - Spring Boot 控制器不工作 404 错误

我正在开发一个 Spring Boot 应用程序,但我的端点根本不工作。我得到下一个问题:

这是我的项目的结构:

在此处输入图像描述

如您所见,控制器在同一路径中是 Application 类的一个子包,但它没有被扫描。

这是我的应用程序类:

我无法确定问题或我缺少什么。有任何想法吗?

0 投票
1 回答
657 浏览

java - Spring boot 404 not found Error message": "No message available

您好,我正在使用连接到 mongo db 的 Spring boot 应用程序,我的问题是我的端点无法正常工作,似乎组件扫描没有找到它们。我已经疯了,因为我被阻止继续开发并且我无法确定问题所在。一切似乎都很好。我想这可能与版本有关,但不太确定。

这是我的控制器:

这是我的应用程序类:

我的 pom.xml

0 投票
3 回答
461 浏览

spring - @ComponentScan 是否应该留在包含 main 方法的类中?

我知道带有@Configuration 的@ComponentScan 告诉Spring 在哪里寻找bean。

我不明白的是我必须将这两个注释放在哪个类上。他们应该留在包含 main 方法的类上吗?像这样

或者他们可以留在任何类别的应用程序上?问题来自这样一个事实,即 Spring 必须知道 @ComponentScan 的位置......或者是否有一种自动方法来检测 Spring 在后台执行的 @ComponentScan 注释?希望能解释一下自己!

0 投票
1 回答
34 浏览

spring - Spring没有看到一个特定的模块

在多模块 maven 项目中,Spring 扫描除一个模块之外的所有内容:

在此处输入图像描述

因此,Spring 忽略了 ui 模块中的 @Component/ @Controller 注解

在此处输入图像描述

任何其他 bean 都在上下文的范围内:

在此处输入图像描述

弹簧配置: 在此处输入图像描述

我相信没有错字或什么的。全新安装,无效缓存不起作用。

0 投票
1 回答
817 浏览

spring-boot - 为什么我不能对我的自动配置进行组件扫描?

Spring Boot 的文档中明确指出必须通过spring.factories文件指定自动配置:

自动配置只能以这种方式加载。确保它们是在特定的包空间中定义的,并且它们永远不是组件扫描的目标。

我确实尝试@Component在我的自动配置类上添加一个,并确保它会被组件扫描拾取。它似乎工作。

虽然我确实认为这是不好的做法,因为组件扫描不太可能在现实世界的场景中真正找到它,但我想知道为什么文档对此有如此强烈的感觉。是否还有其他我没有预料到的危险,如果有,是哪一个?

编辑:在https://youtu.be/jDchAEHIht0?t=734 Stéphane 和 Brian 解释说有两个阶段,一个称为“用户配置阶段”,另一个称为“自动配置阶段”。按照这种想法,@ComponentScan在自动配置类上使用会将其移至“用户配置阶段”,这基本上会破坏自动配置的语义。

但是,我无法在我的实验中打破它。只要我保留我的@Conditional注释,它似乎就可以按预期工作......

0 投票
1 回答
109 浏览

spring - 在没有 application.xml 的情况下连接 Bean 时如何理解注解 @ComponentScan 的工作?

1、当我的字典树喜欢这些时,出现“@EnableAsync annotation metadata was not injection”的错误。</p>

在此处输入图像描述 在此处输入图像描述

2,但是当我的字典树喜欢这样时,错误不会发生。

在此处输入图像描述

3,当我用application.xml连接Bean时,字典树喜欢第一段,但错误也没有发生。

在此处输入图像描述

所以我如此确认的是@ComponentScan 在没有application.xml 的情况下连接Bean 时的工作?

0 投票
0 回答
27 浏览

java - 找出 spring 应用程序在哪里扫描组件

好的,所以我想使用 aClassPathScanningCandidateComponentProvider来查找具有使用自定义注释注释的方法的组件。

我以前做过类似的。但是,这一次,我在一个应用程序正在使用的库中,我无法对包名称做出任何假设。

特别是,分别注释的类可能在我正在使用的库和使用它的应用程序中。

IE

如何获取 Spring 当前用于其组件扫描的所有基本包?