spring boot自动装配注入失败,spring boot自定义starter没有初始化,spring boot自动装配无效,没有执行

在使用Spring Boot时遇到自定义starter无法初始化和自动装配无效的问题,经排查不是启动类包名导致。通过深入源码,发现在`AutoConfigurationImportSelector.getCandidateConfigurations`方法中有问题。解决方法包括调整jar包依赖和检查IDEA的classpath设置。当在IDEA中运行时,由于IDEA的classpath设置导致jar包未加载,清理缓存和重新构建项目可以解决问题。
摘要由CSDN通过智能技术生成

一、问题描述

我这自定义了一堆starter,然后打包成jar,在主程序里引入进来,启动就报错,只有是引入自定义starter里的bean就会报找不到该bean,也就是没有被spirng扫描到,搜索如下关键字:

spring boot自动装配注入失败,spring boot自定义starter没有初始化,spring boot自动装配无效,没有执行

二、解决方法

网上找了一圈,无果,基本上都是说启动类所在包引起啥的,在@SpringBootApplication注解里添加scanBasePackages指定包名:

@SpringBootApplication(scanBasePackages = "com.aaa.bbb")	

我这启动类本身就放在aaa包下,根本就不存在该问题,在网上看了一圈,没找到有啥价值的答案,目前确定的是,这个问题肯定是自动装配引起的,没有初始化,然后又去搜了下,自动装配的原理,看了下,然后通过Debug的方式找到了问题所在,在org.springframework.boot.autoconfigure.AutoConfigurationImportSelector#getCandidateConfigurations方法里找到了答案
在这里插入图片描述
在断言中提示:

No auto configuration classes found in META-INF/
根据提供的引用内容,spring-boot-starter-data-redis是Spring Boot中用于自动装配Redis的starter包。它包含了自动装配所需的类和注解等。当我们在项目的pom.xml文件中引入spring-boot-starter-data-redis包时,Spring Boot会自动根据配置文件中的相关配置信息来完成Redis的自动装配。 具体来说,spring-boot-starter-data-redis使用了RedisAutoConfiguration类来实现自动装配。该类通过读取配置文件中的相关配置信息,例如主机名、端口号、密码等,来创建Redis连接工厂和RedisTemplate等实例。这些实例可以在应用程序中直接使用,而无需手动配置和初始化。 下面是一个示例代码,展示了如何使用spring-boot-starter-data-redis进行自动装配: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.redis.core.RedisTemplate; @SpringBootApplication public class RedisApplication { private final RedisTemplate<String, String> redisTemplate; public RedisApplication(RedisTemplate<String, String> redisTemplate) { this.redisTemplate = redisTemplate; } public static void main(String[] args) { SpringApplication.run(RedisApplication.class, args); } // 在需要使用Redis的地方,可以直接注入RedisTemplate实例,并进行操作 // 例如: // redisTemplate.opsForValue().set("key", "value"); // String value = redisTemplate.opsForValue().get("key"); } ``` 通过上述代码,我们可以看到,在Spring Boot应用程序中,我们只需要在需要使用Redis的地方注入RedisTemplate实例,就可以直接使用Redis的相关操作方法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值