优斗士网站建设,app外包什么意思,网络规划设计师考纲教材改版新旧对比,photoshop正版软件多少钱引言
在Spring Boot的世界中#xff0c;Starter 能够简化我们的开发过程#xff0c;通过封装常见的依赖和自动配置。本篇旨在为有志于进一步简化Spring Boot应用配置的开发者提供指导#xff0c;让我们一起创建一个自定义的Spring Boot Starter。
一、什么是 Spring Boot …引言
在Spring Boot的世界中Starter 能够简化我们的开发过程通过封装常见的依赖和自动配置。本篇旨在为有志于进一步简化Spring Boot应用配置的开发者提供指导让我们一起创建一个自定义的Spring Boot Starter。
一、什么是 Spring Boot Starter?
Starter是Spring Boot中的一个核心概念它是一种依赖描述符用于简化Maven或Gradle项目中的依赖管理和自动配置。Starter通常包含一组预定义的依赖项和一个或多个自动配置类它们可以帮助开发人员快速启动和运行一个特定类型的应用程序。
Starter的工作原理如下
依赖管理Starter通过将常用库和框架组织在一起简化了项目的依赖声明。例如如果一个项目需要使用Spring MVC和Jackson JSON库只需添加spring-boot-starter-web依赖即可无需手动添加Spring MVC和其他相关依赖。自动配置Starter中的自动配置类会根据项目的依赖关系和属性设置自动应用最佳实践配置。这些自动配置类通常位于org.springframework.boot.autoconfigure包中。例如当添加spring-boot-starter-web依赖时Spring Boot会自动配置嵌入式Tomcat服务器和Spring MVC相关的组件。约定优于配置Starter遵循Spring Boot的核心原则之一即“约定优于配置”。这意味着除非明确指定否则默认配置将应用于项目。这有助于减少不必要的配置并使项目更易于维护。
Spring Boot如何使用Starter来简化项目配置
选择适当的Starter根据项目需求从Spring Boot提供的众多Starter中选择合适的依赖。例如对于Web应用程序可以添加spring-boot-starter-web对于数据访问可以添加spring-boot-starter-data-jpa等。添加依赖在项目的构建配置文件如pom.xml或build.gradle中添加所选Starter的依赖。自定义配置可选虽然Starter提供了许多默认配置但开发人员仍然可以根据需要自定义这些配置。这可以通过在项目的配置文件如application.properties或application.yml中覆盖默认值来实现。编写业务代码在Starter的帮助下开发人员可以将更多精力投入到业务代码的编写上而不是关注底层的配置细节。
二、自定义 Starter 的动机
特定领域的需求当你的项目或产品需要针对特定领域进行优化而现有的Starter无法满足这些需求时创建自定义Starter就变得很有必要。例如你的公司可能有一套特定的日志记录策略或者需要集成一个特殊的安全框架而这些都不是通用的Starter所能提供的。封装复杂性如果项目中有一些复杂的配置或组件集成而这些配置经常需要在多个项目中重复使用那么通过创建一个自定义Starter来封装这些复杂性可以避免在每个项目中重复相同的配置代码提高开发效率。促进代码复用在大型组织或企业中可能有多个团队在不同的项目中工作。如果这些项目有共同的技术栈或依赖需求创建一个自定义Starter可以帮助各个团队共享和复用代码减少重复劳动。遵循最佳实践有时候组织内部可能已经形成了一套开发最佳实践通过创建一个自定义Starter可以将这些最佳实践固化并自动应用到所有新项目中确保开发质量和一致性。提供更好的开发者体验自定义Starter可以为开发者提供更加友好的开发体验例如通过简化配置流程、提供清晰的文档和示例代码使得新加入项目的开发者能够更快地上手.
三、创建自定义 Starter
新建一个普通Maven项目yu-spring-boot-starter
① 编写启动器 ② 导入依赖 !-- 引入Spring Boot自动配置依赖 ,用于自动配置应用程序的各种组件和功能.自定义starter时必须要有 --
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-autoconfigure/artifactId
/dependency!-- 引入Spring Boot配置处理器,自定义starter时,调用方的配置文件中可以给出提示信息(如不引用,则不会提示,此包非必须) --
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactId!-- 表示两个项目之间依赖不传递:不设置optional或者optional是false,表示传递依赖;当出现依赖冲突时候,会自动剔除该依赖- --optionaltrue/optional
/dependency③ 添加属性类
如果你的Starter需要一些配置属性你可以创建一个属性类来绑定这些属性。创建一个新的Java类并使用ConfigurationProperties注解标记它为属性类。在该类中定义你需要的属性并提供相应的getter和setter方法。
/*** 将配置文件中以 yu 为前缀的属性值绑定到此Java类上* starter被引用时,会将驼峰命名的参数名称转化为全小写,并在原大写的前面添加-,* 如本类的userName属性,yu.user-name来进行展现*/
ConfigurationProperties(prefix yu)
public class User {private String userName;private String userPassword;//省略get/set...
}
④ 添加一个业务类
定义一个业务类编写核心业务流程
public class UserServiceImpl {Autowiredprivate User user;public String getUserInfo() {return user.getUserName() _ user.getUserPassword();}
}
⑤ 自定义属性配置
需要创建一个自动配置类用于配置和初始化我们的Starter。创建一个新的Java类并使用Configuration注解标记它为配置类。
Configuration // 表示这个类为配置类
EnableConfigurationProperties(User.class) // 启用 User 类的配置属性
public class YuStarterAutoConfiguration {// 在这里定义你要注册的对象BeanConditionalOnClass(UserServiceImpl.class) // 只有当指定的类存在于类路径中时才会创建该方法返回的 Beanpublic UserServiceImpl serviceStarterTest() {return new UserServiceImpl();}
}⑥ 添加需要自动配置的配置类信息
在resources编写一个自己的 META-INF\spring.factories
# 自动配置,如果有多个配置则使用,\结尾的方式即可
org.springframework.boot.autoconfigure.EnableAutoConfiguration\
com.yu.config.YuStarterAutoConfiguration⑦ 编译打包
maven–clear–install即可
⑧ 引用
新建一个SpringBoot 项目,导入我们自己写的启动器
dependencygroupIdcom.yu/groupIdartifactIdyu-spring-boot-starter/artifactIdversion1.0-SNAPSHOT/version
/dependency编写一个 HelloController 进行测试我们自己的写的接口
RestController
RequestMapping(test)
public class UserTestController {Autowiredprivate UserServiceImpl userService;RequestMapping(starter)ResponseBodypublic String starter() {return userService.getUserInfo();}
}编写配置文件 application.properties
yu.user-namehttps://blog.csdn.net/m0
yu.user-password53127626启动项目进行测试结果成功 !
https://blog.csdn.net/m0_53127626四、总结
本文详细介绍如何自定义一个Spring Boot Starter。通过自定义Starter我们可以将一些通用的功能封装起来提高代码的复用性和可维护性。 希望本文对您有所帮助