湘潭哪里做网站 电话,百度指数专业版app,网站源码是什么意思,南宁手机网站制作文章目录 一、什么是SpringBoot Starter1、介绍2、Starter 命名规则 二、Starter 工作原理三、Spring Boot Starter Parent四、如何创建自己的Starter1. 创建项目2. 添加依赖3. 编写自动配置4. 创建spring.factories文件5. 添加附加配置属性#xff08;可选#xff09; 参考 … 文章目录 一、什么是SpringBoot Starter1、介绍2、Starter 命名规则 二、Starter 工作原理三、Spring Boot Starter Parent四、如何创建自己的Starter1. 创建项目2. 添加依赖3. 编写自动配置4. 创建spring.factories文件5. 添加附加配置属性可选 参考 一、什么是SpringBoot Starter
1、介绍
Spring Boot Starter 是 Spring Boot 中的一个重要概念它简化了Spring应用程序的初始化和开发过程。
Starter的主要作用和特点
整合依赖Spring Boot Starter 将与特定功能相关的依赖整合在一起使得开发者只需要在项目中引入相应的Starter就可以快速地使用该功能。这大大简化了依赖管理和配置过程。自动配置Spring Boot Starter 提供了自动配置功能可以根据项目中的依赖和环境自动完成配置。这避免了手动配置的繁琐和易错性使得开发者能够更加专注于业务逻辑的实现。Starter自动配置了大部分常用场景的默认行为这样开发者就无需手动设置。例如添加了数据库相关的Starter后Spring Boot会自动配置数据库连接和对象关系映射ORM简化开发通过Spring Boot Starter 开发者可以快速地构建出独立、可运行的、生产级别的Spring应用程序。它提供了大量预设的配置和功能使得开发者无需从零开始搭建应用程序。可扩展性Spring Boot Starter 不仅简化了开发过程同时也为应用程序的扩展提供了便利。它提供了可扩展的接口和机制使得开发者可以根据需要添加或修改配置项。
总之Spring Boot Starter 为开发者提供了一种快速、简便的方式来构建和开发Spring应用程序它简化了依赖管理、自动配置、默认配置和可扩展性等方面的问题使得开发者能够更加高效地开发出高质量的应用程序。
2、Starter 命名规则
所有的官方启动器都遵循类似的命名模式spring-boot-starter-*其中*代表特定类型的应用程序。这种命名结构有助于你在需要查找启动器时进行查找。许多IDE中的Maven集成可以让你按名称搜索依赖项。例如安装了适当的Eclipse或Spring Tools插件后你可以在POM编辑器中按ctrl-space键然后输入“spring-boot-starter”以获取完整列表。
如“创建自己的启动器”部分所述第三方启动器不应该以spring-boot开头因为这是为官方Spring Boot工件保留的。相反第三方启动器通常以项目的名称开头。例如名为thirdpartyproject的第三方启动器项目通常命名为thirdpartyproject-spring-boot-starter。
二、Starter 工作原理
Spring Boot Starter是Spring Boot提供的一种特殊的依赖管理方式它可以快速、轻松地创建基于Spring框架的应用程序。它的工作原理主要基于以下两点
Maven依赖管理引入Spring Boot Starter实质上就是导入jar包在Spring Boot启动的时候它会找到starter jar包中的resources/META-INF/spring.factories文件根据spring.factories文件中的配置找到需要自动配置的类。SPIService Provider Interface机制SPI是一种实现服务解耦、插件自由插拔的机制。通过一些类加载器去加载classpath下指定目录文件文件中定义的有需要加载的类的全权限定名然后这些类会被识别并加载。
Spring Boot Starter主要完成了两件事
引入模块所需的相关jar包。自动配置各自模块所需的属性。
总的来说Spring Boot Starter的工作原理就是通过Maven依赖管理和SPI机制实现对Spring框架及其相关库的有效管理简化和统一依赖管理系统的初始化过程从而让开发者能够更轻松地定义并配置所需的依赖。
源码解析
构造函数初始化web容器加载ApplicationContextInitializer的实现类并将其实例化加载ApplicationListener的实现类并将其实例化
public SpringApplication(ResourceLoader resourceLoader, Class?... primarySources) {this.resourceLoader resourceLoader;Assert.notNull(primarySources, PrimarySources must not be null);this.primarySources new LinkedHashSet(Arrays.asList(primarySources));// 初始化web容器类型默认SERVLET如果存在org.springframework.web.reactive.DispatcherHandler则是REACTIVEthis.webApplicationType WebApplicationType.deduceFromClasspath();this.bootstrapRegistryInitializers new ArrayList(getSpringFactoriesInstances(BootstrapRegistryInitializer.class));//找到*META-INF/spring.factories*中声明的所有ApplicationContextInitializer的实现类并将其实例化setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));//找到*META-INF/spring.factories*中声明的所有ApplicationListener的实现类并将其实例化setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));//获得当前执行main方法的类对象this.mainApplicationClass deduceMainApplicationClass();
}三、Spring Boot Starter Parent
Spring Boot Starter Parent 是一个特殊的 starter它定义了一个Spring Boot 项目的父工程。它提供了很多默认的配置这些配置可以大大简化我们的开发。
具体来说Spring Boot Starter Parent主要做了以下事情
定义了Java编译版本为1.8使用UTF-8格式编码继承自spring-boot-dependencies这个里边定义了依赖的版本也正是因为继承了这个依赖所以我们在写依赖时才不需要写版本号。执行打包操作的配置。自动化的资源过滤。自动化的插件配置。针对 application.properties 和 application.yml 的资源过滤包括通过profile定义的不同环境的配置文件例如 application-dev.properties 和 application-dev.yml 。 尽管Java 17是 Spring Boot 3.0 的最低要求版本但 spring-boot-starter-parent 将Java编译版本定义为1.8可能是为了保持与现有Spring Boot应用程序和库的兼容性以及为了提供更好的社区支持和长期维护。 总之Spring Boot Starter Parent是一个非常重要的依赖管理工具它为Spring Boot项目提供了一系列的默认配置和功能使得开发者能够更加高效地开发出高质量的应用程序。
四、如何创建自己的Starter
创建自己的Spring Boot Starter涉及一些关键步骤。这里是一个简化的指南来帮助你开始
1. 创建项目
首先创建一个新的Maven或Gradle项目。这个项目将包含你的Starter代码和依赖项。
2. 添加依赖
在项目的pom.xml对于Maven或build.gradle对于Gradle文件中添加必要的Spring Boot依赖项以及任何其他你的Starter将要封装的库。
!-- Maven示例 --
dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependency!-- 添加其他依赖 --
/dependencies3. 编写自动配置
创建一个配置类使用Configuration注解并在必要时使用Conditional注解来条件化地配置bean。例如
Configuration
ConditionalOnClass({ YourClass.class })
ConditionalOnProperty(prefix your.starter, name enabled, havingValue true, matchIfMissing true)
public class YourAutoConfiguration {BeanConditionalOnMissingBeanpublic YourClass yourClass() {return new YourClass();}
}4. 创建spring.factories文件
在你的项目资源目录通常是src/main/resources下创建一个META-INF文件夹并在其中创建一个名为spring.factories的文件。在这个文件中指定你的自动配置类
org.springframework.boot.autoconfigure.EnableAutoConfiguration\
com.yourpackage.YourAutoConfiguration5. 添加附加配置属性可选
如果你的Starter需要配置属性可以创建一个配置属性类使用ConfigurationProperties注解。
ConfigurationProperties(prefix your.starter)
public class YourProperties {private boolean enabled true;// 其他属性和getter/setter
}创建自己的Starter需要对Spring Boot的工作方式有深入的了解特别是自动配置和条件化配置的方面。确保遵循Spring Boot的最佳实践以确保你的Starter易于使用和维护。
参考
创建自己的启动器