springboot starter无法注入bean


注意,springboot2和3的注入方式不一样,参考:

https://www.cnblogs.com/emptyironbox/p/17736143.html

在自定义 starter 项目时,如果组件无法被 @ComponentScan 扫描并且想自动注册到 IOC 中,在springboot2.7之前 我们会采用 spring,factories 方式,但在3.0 之后已经被彻底移除

spring.factories介绍

spring.factoriesSpringBoot提供的SPI机制,底层实现是基于SpringFactoriesLoader检索ClassLoader中所有jar(包括ClassPath下的所有模块)引入的META-INF/spring.factories文件,基于文件中的接口(或者注解)加载对应的实现类并且注册到IOC容器。这种方式对于@ComponentScan不能扫描到的并且想自动注册到IOC容器的使用场景十分合适,基本上绝大多数第三方组件甚至部分spring-projects中编写的组件都是使用这种方案。

# Initializers
org.springframework.context.ApplicationContextInitializer=\
org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer,\
org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener
​
# Application Listeners
org.springframework.context.ApplicationListener=\
org.springframework.boot.autoconfigure.BackgroundPreinitializer
​
# Environment Post Processors
org.springframework.boot.env.EnvironmentPostProcessor=\
org.springframework.boot.autoconfigure.integration.IntegrationPropertiesEnvironmentPostProcessor
​
# Auto Configuration Import Listeners
org.springframework.boot.autoconfigure.AutoConfigurationImportListener=\
org.springframework.boot.autoconfigure.condition.ConditionEvaluationReportAutoConfigurationImportListener
​
# Auto Configuration Import Filters
org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=\
org.springframework.boot.autoconfigure.condition.OnBeanCondition,\
org.springframework.boot.autoconfigure.condition.OnClassCondition,\
org.springframework.boot.autoconfigure.condition.OnWebApplicationCondition
​
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.baomidou.mybatisplus.autoconfigure.MybatisPlusLanguageDriverAutoConfiguration,\
com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration

通用格式是:接口(或者注解)全类名=\接口实现类(或者使用了该注解的类)全类名-1,\接口实现类(或者使用了该注解的类)全类名-2,...接口实现类(或者使用了该注解的类)全类名-nspring.factories中最常用的注解是org.springframework.boot.autoconfigure.EnableAutoConfiguration,通过配置此注解对应的实现了,底层会由AutoConfigurationImportSelector对响应的目标类进行加载和自动注册。通过阅读 Spring Boot 3.0 Migration Guide 得知,spring.factories功能在Spring Boot 2.7已经废弃,并且会在Spring Boot 3.0移除。

spring.factories被移除后的替代方案

在类路径下创建META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,文件的内容是:每个实现类的全类名单独一行。例如对于使用了(低版本还没适配Spring Boot 3.0mybatis-plusdynamic-datasource 组件的场景,可以在项目某个模块的resources目录下建立META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,输入以下内容:

com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration
com.baomidou.mybatisplus.autoconfigure.MybatisPlusLanguageDriverAutoConfiguration
com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration

  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用提到的错误信息"No qualifying bean of type 'xxx' available"通常出现在使用SpringContextHloder#getBean()方法时,说明在Spring容器中找不到对应类型的bean。这可能是由于配置问题导致的。引用指出,你的项目使用的是mybatis-spring-boot-starter的1.0版本。而引用提到,如果你非要使用1.0.0版本的mybatis-spring-boot-starter,那么你的spring-boot-starter-parent必须调低版本。 要解决这个问题,你可以尝试以下步骤: 1. 确认你的Spring配置文件中是否正确配置了相关的bean。可以检查bean的定义和注入方式。 2. 检查你的pom.xml文件,确认引入的mybatis-spring-boot-starter版本与其他依赖项的版本兼容。如果版本不兼容,可能会导致bean无法注入。 3. 如果你确实需要使用1.0.0版本的mybatis-spring-boot-starter,那么根据引用所说,你需要将spring-boot-starter-parent的版本调低。在pom.xml文件中修改parent标签下的版本号为一个低于1.5.19.RELEASE的版本。 4. 如果上述步骤仍然无法解决问题,可能是其他配置或依赖项的问题。你可以尝试查看日志文件或调试代码,以找出更具体的错误信息。 总结来说,当出现"no qualifying bean of type"的错误时,通常是由于Spring容器无法找到对应类型的bean导致的。你可以检查配置、版本兼容性和其他相关问题来解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用SpringBoot获取bean时出错:No qualifying....](https://blog.csdn.net/QINGZHID/article/details/117369243)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [springboot整合mybatis报 NO qualifying bean of type 'com.jvtd.mapper.auth.AdminUserMapper' 把我坑了1...](https://blog.csdn.net/qq_17231297/article/details/82219502)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值