问题标签 [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 回答
908 浏览

spring - 在 Spring MVC 中

如果我将组件扫描放在 spring-common.xml 中并且 Spring MVC 找不到控制器,为什么?但是如果我将组件扫描放在 springMVC-servlet.xml 中并且它可以工作。

web.xml

springMVC-servlet.xml

spring-common.xml

0 投票
2 回答
2781 浏览

java - Spring Boot 组件扫描仅包括特定包

我有两个Spring Boot项目让我们调用它们FooBar. Bar包含在Foo作为依赖项中。现在我只想包含来自的特定包BarComponent Scan比方Foo说:)com.example.bar.ctrl。我知道您可以通过排除软件包,excludeFilters但这会花费更多的精力,并且exclude filter-list每次在Bar. 存档该行为的最佳方法是什么?

0 投票
2 回答
1321 浏览

java - 如何在不使用 ComponentScan 的情况下启动 Spring Boot Web 应用程序

我试图避免组件扫描,以减少我们的模块测试和一般网络应用程序的启动时间。

当我替换@SpringBootApplication为 时@SpringBootConfiguration @EnableAutoConfiguration,出现以下错误:

由于缺少 EmbeddedServletContainerFactory bean,无法启动 EmbeddedWebApplicationContext

我可以以EmbeddedServletContainerFactory某种方式手动导入吗?

0 投票
2 回答
989 浏览

java - 如何避免使用 Spring Boot 由另一个库配置外部库

假设我有两个 Spring Boot 项目。第一个项目只是一个提供各种功能的支持库。第二个是使用支持项目(jar)的“主”项目(主库)。

支持库有一些服务应该由主项目自动装配。

如何配置支持库,使主库不必对支持库进行任何配置。本质上,我说的是组件扫描。

到目前为止我所读的是,主库必须在组件扫描中包含支持库的包。这是真的吗?我希望不会,因为在我看来,支持库应该自己完成所有配置,而另一个仅使用该支持库的库(或项目)不应该处理支持库的配置。

本质上,我想知道支持库是否有可能通过@Configuration注释或类似(或@SpringBootApplication)配置自己,以便另一个库不必处理另一个库的所有细节。我真的希望这确实能以某种方式起作用,因为我认为另一个库必须完成这项工作,因为它支持库的配置。

0 投票
1 回答
7014 浏览

java - 如何配置@ComponentScan 动态?

以上是我SpringBootApplication的主要课程。如您所见,我必须使用注释,而不是 xml。有两个@ComponentScan注解。当然,Spring 是不允许的。对我来说,这两种不同@ComponentScan意味着启动我的应用程序的两种不同方式。如果我选择使用 CS1(意思是@ComponentScan1),我不得不评论 CS2,反之亦然。

它既不优雅也不优雅。特别是对于那些春天的新手。所以我想知道如何根据我的 .properties 文件动态配置它。比如我的 .properties 文件中名为“isScanA”的参数是真的,那么我可以使用 CS1。或任何其他优雅的方式。

我已经尝试了很多。

  1. 使用占位符。比如@ComponentScan(basePackage="${scan.basePackage}").and 在需要的时候改变 .properties 文件中的值。但是这种方式无法修复excludeFilters。因为如果我FilterType.ASSIGNABLE_TYPE用来分配需要排除的类,则value应该是一个Class类型而不是一个String,如果value = {"${scan.excludeClass}"}使用的话。

  2. 程序化方式。

    /li>

我在我的主函数中调用了这个方法。但它也无法解决excludeFilters问题,原因在这里:Doing context:component-scan programatic way?

...

我真的尝试了很多,但仍然无法修复。所以我需要你的帮助。

请原谅我糟糕的英语。

非常感谢,至少你有一点时间阅读。

0 投票
0 回答
42 浏览

java - 从 XML 加载 bean(编程方式)不起作用

使用 XmlBeanDefinitionReader 的 loadBeanDefinitions 方法加载 bean 后,spring xml 的自动扫描功能不起作用,因为 xml 中提到的所有 bean 都已创建,但未创建由 @Component 标记为自动检测的 bean。为什么 Xsd 验证不起作用?

我正在写的代码是

请帮助,提前谢谢。

0 投票
0 回答
213 浏览

java - 当组件扫描中未声明时,Spring扫描所有控制器

我正在 Spring 中开发一个项目,该项目由一些小项目和依赖项组成。这是父项目的简单层次结构:

  • A(一场战争,将暴露的其余 Web 服务)
  • B(另一场战争,也将曝光)
  • C(A 和 B 的 jar 依赖项)
  • D(A 和 B 的 jar 依赖项)

这是我的 context.xml 的片段

每次我部署项目 A 时,我都会在日志中看到 spring 也在扫描项目 B 中的 @Controller 和 @Service。我的问题是它怎么会发生?我的xml配置错了吗?请指教。

*我已经搜索过类似的问题,但找不到任何问题。如果你找到了,请告诉我,也许我没有彻底搜索。

谢谢

0 投票
3 回答
23196 浏览

spring-boot - Spring Boot:来自库项目的自动装配 bean

我正在努力从使用 gradle 导入的自定义库中自动装配 bean。在阅读了几个类似的主题后,我仍然无法找到解决方案。

我有一个依赖于另一个项目的 Spring Boot 项目(我的带有组件、存储库等的自定义库)。这个库是一个 Spring 不可运行的 jar,主要由域实体和存储库组成。它没有可运行的 Application.class 和任何属性...

当我启动应用程序时,我可以看到我的“CustomUserService”bean(来自库)正在尝试初始化,但其中自动装配的 bean 无法加载(接口 UserRepository)......

错误:

com.myProject.customLibrary.configuration.CustomUserDetailsS​​ervice 中构造函数的参数 0 需要一个无法找到的“com.myProject.customLibrary.configuration.UserRepository”类型的 bean。

我什至尝试设置'Order',显式加载它(使用scanBasePackageClasses),使用包和标记类进行扫描,添加额外的EnableJPARepository注释但没有任何效果......

代码示例(为简单起见更改了包名称)

库中的类:

0 投票
3 回答
23719 浏览

java - @ComponentScan 具有多个配置类:基于注释的配置

根据 Spring Doc-

配置组件扫描指令以与 @Configuration 类一起使用。提供与 Spring XML<context:component-scan>元素并行的支持。

在我的 Spring Web 应用程序中,有多个文件被标记@Configuration,以便@component在 Spring 容器中注册 bean-

Question1-我们可以@ComponentScan 在任何@Configuration班级 或所有 @Configuration班级中使用吗?

问题2-

我也在春季文档中看到

为什么在这里扫描配置类本身。

编辑:基本上我的理解@ComponentScan是扫描和注册立体类型bean(例如@componant@Controller等等@Services),为什么我们要注册@ConfigurationBean。

0 投票
1 回答
6463 浏览

java - 来自 2 个包的 @ComponentScan

我有2个项目,主spring boot项目和第二个spring项目,其中包含@Contollers、@Services等。

我尝试在主项目中使用其中的一些服务。我看到了类似的问题,例如这里这里这里和许多其他问题,但它对我不起作用

1)如果我刚刚

然后它无法编译,因为无法从第二个项目中找到服务

2)如果我尝试扫描第二个包

然后应用程序启动没有错误,但控制器映射根本不起作用。无法解决两个项目的映射。

3)然后我尝试从第二个包中排除控制器,因为我不需要它们,映射仍然不起作用

4)然后我尝试扫描特定服务,但在这种情况下,其他资源不可用,我必须包含很多路径

5)最后我尝试制作2个配置文件

但我没有找到示例,如何在 SpringApplication.run(App.class, args); 之前准备上下文 然后让应用程序在我的上下文中运行。喜欢

所以请给我一个建议,为什么映射不起作用或者我应该如何从第二个项目中获得正确的自动装配服务!

我很感激任何帮助!谢谢!