四大核心

1、starter:jar包的引入,解决jar版本冲突问题
2、自动装配:简单配置甚至零配置即可运行项目
3、actuator:springboot程序监控器
4、CLI:命令行

starter

starter的命名有一种习惯,官方的starter一般都是spring-boot-starter-xxx,而我们自定义的starter一般都是xxx-spring-boot-starter。

首先我们需要明白一件事,就是我们自定义的bean是可以自动装配过来的,而我们第三方自定义的starter是如何被componentScan扫描到的呢,其实有一个约定,就是在resources下创建一个META-INF目录,在该目录下创建一个spring.factories文件,然后在该文件下说明哪些类下是你的bean。
org.springframework.boot.autoconfigure.EnableAutoConfiguration

创建一个普通的springboot项目

我这里命名为hzy-spring-boot-starter,当你创建好之后,可以把启动类删了,因为我做依赖一般都是被其他项目引入的,所以留着也没用,然后需要引入两个依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>

引入之后,我们可以定义一个service,里面可以写我们的业务代码。

public class HzyService {public String getHelloWorld() {return "hello world";}
}

然后就是定义一个配置类,这里命名为AutoConfig,用来将我们的service注入到IoC容器中

@Configuration
public class AutoConfig {@Beanpublic HzyService hzyService() {return new HzyService();}
}

然后就是最重要的一步了,让我们的配置类能被扫描到,在Spring中,约定大于配置,约定了我们在resources下创建一个META-INF的目录,里面写一个spring.factories文件,配置上路径即可。

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.hzy.AutoConfig

最后的最后就是将这个项目打包到我们本地的maven仓库了,执行下面的命令即可。

mvn clean install -Dmaven.test.skip=true

最后,像引入其他依赖一样,引入该依赖就可以了,里面那个HzyService,可以直接通过自动装配创建对象。

@Autowired
private HzyService hzyService;

至此,自定starter就结束了,是不是很简单,如果世界这么简单就好了。。。

配置文件

我们在写一些官方的配置的时候,可能会发现,当我们写了一个前缀,后面会有一些提示,重要的是,我们的配置能够生效,这是怎么做到的呢?

其实是通过一个@ConfigurationProperties注解实现的,通过配置前缀,它可以进行扫描到你的配置。

@ConfigurationProperties(prefix = "hzy")
public class HzyProperties {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}

这样一个简单的配置,我们就可以在引入该jar的项目中进行配置了,如果不配置的话,name属性为null。

此时我们修改我们的Service类,把该配置引进来。

public class HzyService {@Autowiredprivate HzyProperties hzyProperties;public String getHelloWorld() {return "hello world: " + hzyProperties.getName();}
}

另外,我们还需要修改我们的自动装配类,通过@Import注解,将该类提前注入到IoC容器。

@Configuration
@Import(HzyProperties.class)
public class AutoConfig {@Beanpublic HzyService hzyService() {return new HzyService();}
}

当我们引入了该依赖之后,会有提示了,配置一下name,再次运行

可以看到,配置已生效,好了,今天的分享就到这里了。

SpringBoot四大核心之starter——自定义starter相关推荐

  1. SpringBoot四大核心

    SpringBoot四大核心 SpringBoot四大核心 1.自动配置 1.1application.properties配置文件 1.2application.yml配置文件 1.3applica ...

  2. SpringBoot四大核心之自动装配——源码解析

    四大核心 1.自动装配:简单配置甚至零配置即可运行项目 2.Actuator:springboot程序监控器 3.starter:jar包的引入,解决jar版本冲突问题 4.CLI:命令行 初学体验 ...

  3. SpringBoot四大核心之actuator——程序监控器

    四大核心 1.Actuator:springboot程序监控器 2.自动装配:简单配置甚至零配置即可运行项目 3.starter:jar包的引入,解决jar版本冲突问题 4.CLI:命令行 actua ...

  4. SpringBoot | 四大核心之actuator(程序监控器)

    Actuator 程序监控器 1. Actuator(程序监控器) 简介 2. 怎么使用 2.1 引入pom依赖 2.2 编写配置 2.3 启动程序 1. Actuator(程序监控器) 简介 act ...

  5. SpringBoot——四大核心之指标监控(actuator)

    1.写在前面 首先肯定要说一下SpringBoot的四大核心了: 自动装配:简单配置甚至零配置即可运行项目 起步依赖:场景启动器 Actuator:指标监控 命令行界面 :命令行 这篇文章呢,我来和大 ...

  6. 【读官方文档,学原味技术】SpringBoot-Staters和自定义Starter

    spring-boot-reference 如果不想阅读英文原文,你可以直接读本文的[TS]标注参考翻译内容.由于本人水平有限,如有理解错误,烦请指正,互相交流. Lire les documents ...

  7. Spring Boot : 自定义 Starter

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

  8. SpringBoot自定义Starter(自动配置类)

    前言 SpringBoot其实从诞生以来围绕的核心就是快速构建项目,快速构建的前提是有人帮你做好轮子,开发者只要拿来即用就好了,而造好轮子的人就是SpringBoot的开发者,引入自动配置的形式帮助开 ...

  9. @configurationproperties注解的使用_徒手使用SpringBoot自定义Starter启动器

    前言 在使用SpringBoot框架时,SpringBoot 最强大的功能就是把我们常用的场景抽取封装成了一个个starter,将其称之为场景启动器.搭建项目时,通过引入SpringBoot为我提供的 ...

最新文章

  1. 警惕!新版Net Transport(影音传送带)安装有猫腻
  2. 用tf的VocabularyProcessor创建词汇表vocab
  3. 换行标签br(HTML)
  4. Python 动图、动画制作 —— moviepy、matplotlib.animation
  5. python用什么软件编程-初学python编程,有哪些不错的软件值得一用?
  6. 树和二叉树定义、基本术语和性质
  7. [运维笔记] - (命令).Windows server常用网络相关命令
  8. 思科CCIE证书电子档下载教程
  9. 计算机的高级应用office,MS Office高级应用
  10. raid check
  11. 遗传算法(2):对适应度函数的改进
  12. 国际奥林匹克运动会是怎么来的?
  13. 寒假训练1—H(第一次写出结构体数组)
  14. 一个苹果成就了牛顿,一个苹果杀死了图灵。
  15. 海外社交媒体最佳图片尺寸
  16. python空气质量指数计算_Python入门案例(八):空气质量指数(AQI)计算
  17. C语言概述(三)-- 宏定义、指针、结构体
  18. (征求意见稿)中国银河证券公募基金分类体系规则文档 (2019版)
  19. 学习记录:使用STM32F1看门狗
  20. 百度js 检测输入法_不明恶意攻击致lt;搜狗搜索gt;lt;搜索结果gt;跳转lt;百度搜索gt;技术原理分析...

热门文章

  1. Jquery.Validation表单验证
  2. Flex4学习笔记(二)--语法相关
  3. mysql------explain工具
  4. 【dp】POJ-2817
  5. git push 报错:you are not allowed to upload merges
  6. 慢慢人生路,学点Jakarta基础-深入剖析Java的接口和抽象类
  7. delphi 演示数据路径
  8. hdu-2032杨辉三角
  9. Oracle压缩总结2— 估计表压缩效应
  10. log4j日志输出性能优化