问题标签 [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.
java - 春季启动 @ComponentScan 与 @Import
我和我的朋友讨论过@ComponentScan
和@Import
。哪一个更好?我们有两个不同的想法。
@ComponentScan
:易于使用,从组件扫描中导入所有bean。@Import
:你需要知道你要使用什么组件,不需要扫描所有。
你的想法怎么样?哪一个更适合您使用?
谢谢!
java - 如何查看@ComponentScan 扫描的类路径列表以解决 NoSuchBeanDefinitionException
在 Spring boot 1.5.9 应用程序中,我有@SpringBootApplication
我的主类。
我也有@KopaxgroupApi
注释,带有:
存在KopaxgroupApiConfig.class
:
我已经在其中创建了一个新项目,com.kopaxgroup.api.customerManagement.callMeBack
并且我将存储库和服务分别存储在目录repository
和service
.
CallMeBackServiceImpl
找不到CallMeBackRepository
. _
我在启动时遇到以下错误:
我试图搬进CallMeBackRepository
去com.kopaxgroup.api.customerManagement.callMeBack.service.impl
,但错误仍然存在。
我有一些类似的软件包,它们都可以启动,我看不出配置有什么不同。
创建新 jar 时会发生这种情况。
我已经添加了一堆@ComponentScan
但我无法解决它,我怎样才能进一步挖掘并查看期间使用的类路径列表@ComponentScan("com.kopaxgroup.api")
?
java - 使用 @ComponentScan 进行元注释的 Spring 自定义 @Enable 注释
我正在尝试为 Spring 框架编写自己的@Enable
注释,应按如下方式使用:
我使用自定义注释跟随组件扫描,但这带来了一些限制:
我无法使基础包属性动态化,即无法通过
"com.example.package.base"
,但需要在配置时预先定义包。我看了看
@AliasFor
,但无法让它工作。当我省略基本包时,扫描从注释的定义包开始,而不是从注释类的包开始。在上面的示例中,它只会为 中的类扫描和创建 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
以下是包结构的概要:
java - Spring boot 404 not found Error message": "No message available
您好,我正在使用连接到 mongo db 的 Spring boot 应用程序,我的问题是我的端点无法正常工作,似乎组件扫描没有找到它们。我已经疯了,因为我被阻止继续开发并且我无法确定问题所在。一切似乎都很好。我想这可能与版本有关,但不太确定。
这是我的控制器:
这是我的应用程序类:
我的 pom.xml
spring - @ComponentScan 是否应该留在包含 main 方法的类中?
我知道带有@Configuration 的@ComponentScan 告诉Spring 在哪里寻找bean。
我不明白的是我必须将这两个注释放在哪个类上。他们应该留在包含 main 方法的类上吗?像这样
或者他们可以留在任何类别的应用程序上?问题来自这样一个事实,即 Spring 必须知道 @ComponentScan 的位置......或者是否有一种自动方法来检测 Spring 在后台执行的 @ComponentScan 注释?希望能解释一下自己!
spring-boot - 为什么我不能对我的自动配置进行组件扫描?
在Spring Boot 的文档中明确指出必须通过spring.factories
文件指定自动配置:
自动配置只能以这种方式加载。确保它们是在特定的包空间中定义的,并且它们永远不是组件扫描的目标。
我确实尝试@Component
在我的自动配置类上添加一个,并确保它会被组件扫描拾取。它似乎工作。
虽然我确实认为这是不好的做法,因为组件扫描不太可能在现实世界的场景中真正找到它,但我想知道为什么文档对此有如此强烈的感觉。是否还有其他我没有预料到的危险,如果有,是哪一个?
编辑:在https://youtu.be/jDchAEHIht0?t=734 Stéphane 和 Brian 解释说有两个阶段,一个称为“用户配置阶段”,另一个称为“自动配置阶段”。按照这种想法,@ComponentScan
在自动配置类上使用会将其移至“用户配置阶段”,这基本上会破坏自动配置的语义。
但是,我无法在我的实验中打破它。只要我保留我的@Conditional
注释,它似乎就可以按预期工作......
java - 找出 spring 应用程序在哪里扫描组件
好的,所以我想使用 aClassPathScanningCandidateComponentProvider
来查找具有使用自定义注释注释的方法的组件。
我以前做过类似的。但是,这一次,我在一个应用程序正在使用的库中,我无法对包名称做出任何假设。
特别是,分别注释的类可能在我正在使用的库和使用它的应用程序中。
IE
如何获取 Spring 当前用于其组件扫描的所有基本包?