自己写spring boot starter问题总结

1. Unable to find main class

创建spring boot项目写自己的starterxi写完之后使用install出现Unable to find main class,这是因为spring boot打包需要一个启动类,按照以下写法就没事

xml 复制代码
<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <layout>NONE</layout>
            <skip>true</skip>           <!--    自己打出的包也能用 ,就是打出的包不包含BOOT-INF目录        -->
        </configuration>
    </plugin>
</plugins>          

<layout>NONE</layout>解决启动类问题,<skip>true</skip> 解决打出jar包不包含BOOT-INF目录 ,否则依赖stater总是报某某包未找到

非正常

正常

2. 版本问题

在引入自己的starter之后,一直无法自动注入写的Bean并且代码没问题。此时需要注意你的spring boot版本。3.0.x版本之后自动装配的文件命名不再是spring.factories

而是org.springframework.boot.autoconfigure.AutoConfiguration.imports文件命名必须要按照这个名字。具体原因可以参考spring boot自动转配原理,如下

AutoConfigurationImportSelector类主要就是扫描自动装配文件并注册相关的类,这个类的getCandidateConfigurations方法: configurations这个集合里面就是所有应该自动装配的类的路径,根据提示可知自动装配的文件应该写在META-INF/spring/

java 复制代码
protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
		List<String> configurations = ImportCandidates.load(AutoConfiguration.class, getBeanClassLoader())
			.getCandidates();
		Assert.notEmpty(configurations,
				"No auto configuration classes found in "
						+ "META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. If you "
						+ "are using a custom packaging, make sure that file is correct.");
		return configurations;
	}

还有一点需要注意就是starter的版本必须要跟需要使用的工程项目spring boot一致否则报错

相关推荐
计算机毕设指导6几秒前
基于微信小程序的校园食堂点餐系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
AAA简单玩转程序设计1 分钟前
救命!Java小知识点,基础党吃透直接起飞
java·前端
Mr.Pascal2 分钟前
深度解读一下 springcloud 的 pom.xml 用到的标签
xml·spring boot·spring cloud
周杰伦_Jay3 分钟前
【Go语言面试题核心详细解析】基础语法、并发编程、内存管理、接口、错误处理
开发语言·后端·golang
李玮豪Jimmy3 分钟前
Day42:单调栈part2(42.接雨水、84.柱状图中最大的矩形)
java·算法
福尔摩斯张4 分钟前
Linux Kernel 设计思路与原理详解:从“一切皆文件“到模块化架构(超详细)
java·linux·运维·开发语言·jvm·c++·架构
Qiuner6 分钟前
Spring Boot AOP(二) 代理机制解析
java·spring boot·后端
回家路上绕了弯7 分钟前
分布式与集群:90%的开发者都混淆的两个概念
分布式·后端
PieroPC9 分钟前
NiceGui 3.4.0 的 ui.pagination 分页实现 例子
前端·后端
十月南城11 分钟前
分布式锁与幂等的边界——正确的锁语义、过期与续约、业务层幂等配合
后端