gpt4 book ai didi

spring - 创建自动配置 spring 库到 spring-boot 应用程序

转载 作者:行者123 更新时间:2023-12-02 15:12:59 25 4
gpt4 key购买 nike

我正在创建一个使用 spring 4.3.0 的库。其中一个 spring-boot 应用程序将使用该库。目前我在spring-boot应用程序的主类中使用@ComponentScan来扫描库中的bean,而不是我想自动配置它。所以我所做的是在库中创建一个配置类并在配置中声明@ComponentScan文件。

在 spring-boot 应用程序中使用库后,它不会扫描库中的 beans 并抛出,

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.sample.book.client.service.BookService] found for dependency [com.sample.book.client.service.BookService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1406)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1057)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1019)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
... 33 common frames omitted

如何解决这个错误?为什么 Spring 在 @Configuration 之前扫描 @service 类?

您的帮助应该是可观的,如果需要我会提供代码示例。

最佳答案

在我看来,最可能的原因是您的库驻留在与您的 spring boot 应用程序(及其子包)不同的包中。当使用 @SpringBootApplication 注释一个类时,您还会将 @ComponentScan 注释设置为其默认值(即扫描给定类所在的包中的组件)。

就个人而言,我更喜欢在我的库项目中创建一个带@Configuration 注释的类。此类负责正确的库设置(声明组件扫描等)。后来,在依赖项目中,我使用 @Import 注释来导入该配置类(和相应的 bean)。

关于spring - 创建自动配置 spring 库到 spring-boot 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42248718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com