SpringBoot自定义starter
1、SpringBoot之starter机制
1.1、什么是自定义starter
SpringBoot中的starter是一种非常重要的机制(自动化配置),能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。
SpringBoot会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。SpringBoot提供了针对日常企业应用研发各种场景的spring-boot-starter依赖模块。
缺点:
springboot starter带来的问题
starter使SpringBoot集成第三方框架变得简单,但对刚刚上手SpringBoot的人来说,可能只知道配置属性是在application.xml或application.yml中添加,但他们各自的属性都有哪些,具体怎么配置,却无从下手
1.2、为什么要使用Springboot的自定义starter
使用自定义starter有几个重要的原因:
- 简化依赖管理:通过将常用的依赖和配置封装到一个starter中,可以避免在每个项目中手动添加和管理这些依赖,从而减少了开发人员的工作量和错误的可能性。
- 提高开发效率:自定义starter能够自动加载所需的配置和组件,帮助开发团队快速搭建具备特定功能的项目骨架。这样开发者可以更专注于业务逻辑的实现,而不是花费时间在配置上。
- 便于维护和升级:当需要更新或升级功能时,只需修改自定义starter,所有依赖于该功能的项目都可以从更新中受益,无需逐个修改每个项目。
- 推广和共享:自定义starter可以被发布到公共仓库中,使其他开发团队或开发者能够轻松地引入和使用,促进了代码重用和团队之间的合作。
总结来说,使用自定义starter可以显著简化项目的开发和维护流程,提高团队的整体开发效率,同时也有助于代码的标准化和共享。
1.3、SpringBoot的自定义starter的应用场景
- 简化多服务公用框架集成:
- 在微服务架构中,多个服务可能会共用某些框架或功能,如Swagger用于生成在线接口文档。通过创建自定义starter,可以简化每个服务中的配置过程,避免重复劳动。例如,封装一个swagger-starter,服务中只需引入此starter即可自动生成接口文档,无需在每个服务中单独配置。
- 服务间调用的鉴权:
- 当服务间通过Feign进行相互调用且需要进行鉴权时,可以创建一个自定义starter来封装鉴权逻辑。这样,在每个服务发起调用之前,都会自动添加鉴权参数,目标服务收到请求后也会自动进行鉴权,从而简化了每个服务的鉴权配置。
- 快速搭建特定功能的项目:
- 针对特定功能或业务需求,可以创建自定义starter来快速搭建项目。例如,开发一个电商平台时,可以创建一个包含商品管理、订单处理、支付接口等功能的自定义starter。新项目只需引入此starter,即可快速具备这些功能。
- 统一配置和管理:
- 在大型项目中,可能存在多个服务或模块需要共享某些配置或管理功能。通过自定义starter,可以将这些共享的配置和管理功能封装起来,确保各个服务或模块能够一致地使用这些功能。
- 第三方库或框架的集成:
- 当需要使用某个特定的第三方库或框架时,如果Spring Boot官方没有提供相应的starter,可以自定义一个starter来简化集成过程。这样,其他项目只需引入这个自定义starter,就可以轻松地使用该第三方库或框架。
总的来说,自定义Spring Boot starter的应用场景非常广泛,主要用于简化配置、提高开发效率、统一管理和维护等方面
1.4.自动加载核心注解说明
2、创建一个自定义starter
2.1、命名规范
- SpringBoot官方命名方式:
spring-boot-starter-{模块名}
例如:spring-boot-starter-web
- 自定义命名方式:
{模块名}-spring-boot-starter
例如:teststarter-spring-boot-starter
starter项目和SpringBoot工程结构没有什么区别。必须引入的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
spring-boot-configuration-processor
是一个注解处理器,用于处理 Spring Boot 配置类的注解,并生成配置属性的元数据。它在开发过程中起到以下几个重要的作用:
- 生成配置属性的元数据: 当你使用
@ConfigurationProperties
注解来声明配置类时,spring-boot-configuration-processor
会解析该注解,并生成与配置属性相关的元数据。这些元数据包括属性的名称、类型、描述、默认值等信息。这些信息可以帮助 IDE 在开发过程中提供代码提示、自动补全和验证功能。 - 提供配置属性的编译时验证: 使用
@ConfigurationProperties
注解时,你可以使用其他注解(如@Value
、@Valid
等)来描述配置属性的约束条件。spring-boot-configuration-processor
可以处理这些注解,并在编译时进行验证。这样,你可以在开发阶段及早发现配置属性的错误或不一致,而不是在运行时才遇到问题。 - 简化配置类的编写: 通过使用
spring-boot-configuration-processor
,你可以更轻松地编写配置类。它会自动处理@ConfigurationProperties
注解及其相关注解,生成属性的 getter、setter 方法,并提供默认的配置文件映射规则。这样,你可以专注于定义配置属性的结构和业务逻辑,而不需要手动编写重复的代码。 - 提升开发体验:
spring-boot-configuration-processor
增强了开发工具的功能,例如在 IDE 中提供配置属性的智能提示、文档、类型检查等功能。这可以减少开发过程中的错误,并提高代码的可读性和可维护性。
总而言之,spring-boot-configuration-processor
可以简化 Spring Boot 配置类的开发,提供编译时验证和开发工具的支持,从而改善开发体验并减少潜在的配置错误。它是 Spring Boot 框架中重要的辅助工具,帮助开发者更高效地处理配置属性。
2.2、创建项目
使用Cloud Native App Initializer (aliyun.com)云原生应用脚手架创建项目(注:也可以直接使用IDEA创建)