深度分析:SpringBoot 中自定义 starter 实例与原理
1 自定义启动器
本文首先提出以下开发需求:需要自定义一个启动器 spring-boot-football-starter,业务方引入这个启动器之后可以直接使用 Football 实例。
1.1 创建项目
1.1.1 项目名
1.1.2 springboot 版本号
1.2 创建 Football
1.3 创建配置类
1.4 创建 AutoConfiguration
条件注解说明
1.5 spring.factories
工厂文件位置
工厂文件内容
2 测试启动器
2.1 引入依赖
2.2 application.yml
2.3 TestController
2.4 TestApplication
2.5 测试用例
2.6 测试结果
3 原理分析
启动类
SpringBootApplication
EnableAutoConfiguration
AutoConfigurationImportSelector
getCandidateConfigurations
loadFactoryNames
4 延伸知识
4.1 spring 官方启动器
英文介绍
Starters are a set of convenient dependency descriptors that you can include in your application. You get a one-stop shop for all the Spring and related technologies that you need without having to hunt through sample code and copy-paste loads of dependency descriptors. For example, if you want to get started using Spring and JPA for database access, include the spring-boot-starter-data-jpa dependency in your project
中文介绍
Starter 是一组方便的依赖描述符,你可以将其包含在应用程序中。你可以一站式获得所有所需的 Spring 和相关技术,而无需在示例代码中搜索并复制粘贴大量依赖描述符。如果你想要开始使用 Spring 和 JPA 进行数据库访问,请在项目中包含 spring-boot-starter-data-jpa 依赖项
4.2 spring-boot-starter
这个启动器是核心启动器,功能包括自动配置支持、日志记录和 YAML。任意引入一个启动器点击分析,最终发现引用核心启动器。
引用 spring-boot-starter-data-redis
发现引用 spring-boot-starter
发现引用 spring-boot-autoconfigure
工厂文件位置
文件中指定 Redis 自动配置
自动装配类 RedisAutoConfiguration
配置信息类 RedisProperties
application.yml 文件配置
4.3 第三方启动器
如果使用第三方启动器,如何知道在 yml 文件中设置什么配置项?本章节以 mybatis 为例:
引入 mybatis-spring-boot-starter
自动装配依赖
工厂文件位置
文件中指定 MyBatis 自动配置
自动配置类 MybatisAutoConfiguration
配置信息类 MybatisProperties
application.yml 文件配置
5 文章总结
第一章节介绍如何自定义一个简单启动器,第二章节对自定义启动器进行测试,第三章节通过源码分析介绍启动器运行原理,第四章进行知识延伸介绍 spring 官方启动器,使用第三方启动器相关知识,希望本文对大家有所帮助。
评论