一、创建starter的原理

在我们使用spring Boot的时候,常常要引入很多的starter,这也是spring Boot的一大特色,那么这些stater到底时怎么回事儿呢,今天就一起扒开看看

  1. 引入starter --- xxxAutoConfiguration --- 容器中放入组件 ---- 绑定xxxProperties ---- 配置项

  2. 点进某一个starter我们会发现,这玩意其实是个pom文件,里面指定了很多的依赖;这个东西叫做场景启动器,所谓的场景启动器呢,其实主要的作用就是引入依赖,声明我们这个场景下需要使用哪些jar包,以及里面都会引入一个自动配置包
  3. 而这个自动配置包就是我们starter的主要逻辑代码所在的部分了
  4. 所以我们在自定义starter的时候,也按照这个步骤来即可,即:

    yang-hello-spring-boot-starter(启动器)

    yang-hello-spring-boot-starter-autoconfigure(自动配置包)

二、自定义starter步骤

  1. 在创建自定义stater的时候,我们需要两个工程,第一个就是场景启动器,也就是xxx-spring-boot-stater;建个普通maven工程就可以了;在该项目中的pom文件中将自动配置包坐标引入,要是还需要其他的也可以引入

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.yang</groupId><artifactId>yang-spring-boot-stater</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><!--引入自动配置包--><dependency><groupId>com.yang</groupId><artifactId>yang-spring-boot-stater-autoconfigure</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies></project>

    2.之后,我们要准备自动配置包,需要创建一个springBoot项目,然后在pom文件中引入自己需要的依赖,建议引入spring-boot-configuration-processor这样其他项目使用配置的时候就由提示了

    3.创建一个bean即我们看到官方使用的xxxProperties,将其与配置文件绑定

    //指定配置文件的前缀
    @ConfigurationProperties(prefix = "yang.hello")
    @Data
    public class HelloProperties {private String prefix;private String suffix;}
    

    4.创建一个service,模拟业务代码逻辑,默认不要将其放入容器中,后面我们使用配置文件同一管理

    public class HelloService {//自动注入了实体类helloProperties,所以修改配置类的时候,属性就会跟着修改@AutowiredHelloProperties helloProperties;public String hello(String username){return helloProperties.getPrefix()+username+helloProperties.getSuffix();}
    }
    

5. 之后还要准备一个配置类,将service注入容器中(因为在第一步的service中我们不会将其                 注入容器);并且使用EnableConfigurationProperties注解,将实体类和配置文件的关联打              开以及注入容器;还可以使用ConditionOnMissingBean等注解,按照具体情况进行条件判断

/*** @ProjectName: com.yang.yangspringbootstaterautoconfigure.conf* @author: ZhangBiBo* @description: 配置类,打开实体类和properties的关联,并将其注入容器,当容器中没有helloService实体类的时候自动配置,若有就按照用户的来* @data: 2022/3/14*/
@EnableConfigurationProperties(HelloProperties.class)
@Configuration
public class YangAutoConfiguration {@ConditionalOnMissingBean(HelloService.class)@Beanpublic HelloService helloService(){HelloService helloService = new HelloService();return helloService;}
}

6.最后需要在resource目录下建立一个META-INF目录,创建spring.faction文件,将我们的配置类     XXXAutoConfiguration类的类路径放入其中,这样在springBoot在启动时就可以加载到我们自定     义的配置类了,否则的话加载不到配置类,也就找不到文件了

7.最后将场景启动器和自动配置包install就可使用;我们可以重新创建一个工程来进行测试,引入场景启动器,直接Autowired引入我们刚刚的HelloService即可,之后在application.yaml中配置好需要配置的文件

Spring Boot自定义starter相关推荐

  1. Spring Boot : 自定义 Starter

    1.美图 2.概述 因为spring boot 已经自定义了很多starter,但是任然不能涵盖所有的开发场景,所以有时候就需要我们自己自定义starter. 自定义starter需要思考的问题 : ...

  2. Spring Boot自定义横幅生成

    每当我们启动Spring Boot应用程序时,都会显示如下所示的文本消息. 这称为横幅. 现在,如果我们可以创建一个特定于我们的Spring Boot应用程序的自定义横幅并使用它代替默认的Spring ...

  3. Spring Boot(3)---Spring Boot启动器Starter详解

    Spring Boot的启动器Starter详解 Spring Boot 简化了 Spring 应用开发,不需要配置就能运行 Spring 应用, Spring Boot 管理 Spring 容器.第 ...

  4. Spring Boot自定义Banner

    Spring Boot自定义Banner https://www.jianshu.com/p/a53f324c92f2 我们在启动 SpringBoot 时,控制台会打印 SpringBoot Log ...

  5. Spring Boot自定义启动Banner

    Spring Boot自定义启动Banner 生成工具 https://www.bootschool.net/ascii

  6. 八、Spring Boot自定义starters

    一.自定义starters • 自动装配Bean: – 自动装配使用配置类(@Configuration)结合Spring4 提供的条件判断注解 @Conditional及Spring Boot的派生 ...

  7. Spring Boot自定义starters

    starter: 这个场景需要使用到的依赖是什么? 如何编写自动配置 /*** 以WebMvcAutoConfiguration为例*///指定这个类是一个配置类 @Configuration(pro ...

  8. Spring Boot自定义 Servlet Filter 的两种方式

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 针 ...

  9. Spring Boot中Starter是什么

    比如我们要在Spring Boot中引入Web MVC的支持时,我们通常会引入这个模块spring-boot-starter-web,而这个模块如果解压包出来会发现里面什么都没有,只定义了一些POM依 ...

  10. Spring Boot——自定义Web配置类后无法访问/static文件夹下静态资源

    问题描述 自定义Web配置类后无法访问 /static文件夹下静态资源. 已加相关依赖包. 官方文档 Spring MVC Auto Configuration Maven <dependenc ...

最新文章

  1. homebrew的安装和使用
  2. open session and Hibernate事务处理机制
  3. 网页性能优化01-精灵图利弊与应用场景
  4. IdentityServer4(八)使用EntityFramework Core对数据进行持久化
  5. 网络查找文档比自己电脑上还方便?
  6. (转)谷歌安卓官方教程中文版
  7. 七牛播放器SDK的crash坑
  8. 风云气象卫星数据处理调研报告
  9. 使用命令行把debian变成实时系统
  10. 不相交轮换的乘积怎么求_伽罗华理论基础_刘长安.pdf_(12)(123)(14)不相交的乘积,8.将10次置换表互不相交的循环置换的乘积,并且求出。的逆与。的阶-教育文档类资源...
  11. 生产环境服务CPU飙升问题分析
  12. CSPS-S 模拟47
  13. 古代帝王有哪些“恩爱夫妻”?
  14. [算法]LeetCode 专题 -- 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置
  15. 输出字符的 ASCII 码
  16. 实验1:用户的登录与退出、IO重定向与简单文件操作
  17. 2021年中国柠檬茶行业发展概况及行业发展趋势分析[图]
  18. MAC下配置JAVAWEB环境(原创,写的很详细)
  19. 【SAP】会计科目过账时提示:没有项目种类分配到科目 总帐科目号/帐目表
  20. c语言的链表实验总结,链表实现集合实验报告_相关文章专题_写写帮文库

热门文章

  1. 喜报 | 谱尼测试获得零跑科技第三方试验室认可
  2. 计算机如何安装cpu风扇,从零开始学装机 教你如何安装CPU风扇
  3. App中WebView网页加载优化实战干货
  4. system/app 下 精简程序
  5. Web前端之HTML+CSS的知识总结
  6. mysql新建用户并授权管理员_MySQL数据库新建用户与授权方法
  7. PAT乙级 1068 万绿丛中一点红 (20 分) Java 实现
  8. 囍游记----[转_]
  9. 利用计算机来对指纹,指纹自动识别系统.doc
  10. 曙光服务器bios开启vt虚拟化,VT开启教程 BIOS开启VT方法