springboot手写一个自己的starter源码

作者:laozhang 时间:2021-07-31 10:18:14 

springboot的最强大的就是那些xxxAutoconfiguration,但是这些xxxAutoConfiguration又依赖那些starter,只有导入了这些场景启动器(starter),我们很多自动配置类才能有用,并且还会新增一些功能,这次就来一起写个简单的starter,来看看内部到底是什么原理!

脑中大概有个印象:我们要用一个场景(比如web),直接导入下图所示的依赖,但是在jar包里面去看这个,你会发现里面只有一些基本的配置文件,什么类都没有,就能够想到这个一类就类似一个公司前台的作用,通过这个公司前台,能够联系到公司内部。

springboot手写一个自己的starter源码

提前准备:必须要有IDEA模块化创建项目的基本操作,其他的随意。

温馨提醒:对于会用模块的小伙伴,其实这里就是创建一个空项目,里面新建一个maven模块,一个springboot模块,springboot坐标丢到maven的pom里面,再删除一些多余的文件和依赖。

1.创建一个空的项目

springboot手写一个自己的starter源码

 

然后就会跳出下图这个页面

springboot手写一个自己的starter源码

springboot手写一个自己的starter源码

springboot手写一个自己的starter源码

springboot手写一个自己的starter源码

 

上面相当于前台创建好了,下面开始创建真正的东西了,继续创建模块

springboot手写一个自己的starter源码

springboot手写一个自己的starter源码

springboot手写一个自己的starter源码

springboot手写一个自己的starter源码

springboot手写一个自己的starter源码

两个模块创建好了之后,将这两个模块联系起来(废话,公司前台肯定要有和上级的的通话方式啊)

springboot手写一个自己的starter源码

 

导入依赖之后就是这样的

springboot手写一个自己的starter源码

 

下一步就是在xxxautoconfiguration模块,删除一些没用的东西和依赖,但是一定要保留一个最基本的starter

springboot手写一个自己的starter源码

springboot手写一个自己的starter源码

到这里,基本的准备工作已经完成(其实会用模块式的直接能跳到这里来)

记住:xxxstarter是前台,只是起到一个联系作用(所以我们基本不配置这个),没有什么其他功能,但是那个xxxautoconfiguration才是内部有实权的老板

现在我们来做个老板出来,嘿嘿嘿!

下面看我的目录结构

springboot手写一个自己的starter源码

 从头到尾看一下这些类里面有什么

第一个:HelloProperties

springboot手写一个自己的starter源码

第二个:HelloWorld(记住,此时这个类和properties类还没什么关系,必须要让第三方传入properties)

springboot手写一个自己的starter源码

第三个HelloWorldAutoconfiguration

springboot手写一个自己的starter源码

第四个.spring.factories文件

springboot手写一个自己的starter源码

最后一步:把这两个安装到maven本地仓库(记得,先是xxautoconfiguration,然后再starter)

springboot手写一个自己的starter源码

另外一个starter一样的操作

到此为止,一个简单的HelloWorid的starter就做出来了,我们只需要在我们的项目中导入那个starter(也就是前台唯一的作用)的依赖,就可以了,看看我的starter的坐标(还要记住,properties文件配置的@ConfigurationProperties(prefix = "wyq.hello"),这个prefix是可以在我们项目里面配置文件配置属性的哦~~)

springboot手写一个自己的starter源码

 测试:

file------>new------->project,和以前用springboot一样,随便新建一个springboot应用(记住,一定要选择web模块,不然自动配置类作用,因为配置了@ConditionalOnWebApplication),导入上图的依赖

springboot手写一个自己的starter源码

springboot手写一个自己的starter源码

springboot手写一个自己的starter源码

随便写个controller测试一下

springboot手写一个自己的starter源码

测试成功

springboot手写一个自己的starter源码

到此结束,是不是觉得starter也就这样啊,挺好玩的一个东西,而且最重要的是这种设计的模式有点厉害!通过这样的设计,居然能够实现自动配置,果然是学海无涯啊,要不断的学习别人前辈造就出来的成果,站在巨人的肩膀上学习,我们才能走得更远啊!

标签:springboot,starter
0
投稿

猜你喜欢

  • SpringIOC框架的简单实现步骤

    2021-10-28 21:44:35
  • 用java开发dota英雄最华丽的技能(实例讲解)

    2022-05-27 00:10:20
  • spring定义和装配bean详解

    2023-08-23 00:33:18
  • 详解Spring依赖注入的三种方式使用及优缺点

    2023-06-09 18:29:00
  • java与JSON数据的转换实例详解

    2022-07-03 22:48:25
  • android采用FFmpeg实现音频混合与拼接剪切

    2023-10-04 06:51:24
  • mybatis初始化SqlSessionFactory失败的几个原因分析

    2021-06-17 11:13:44
  • Java基础知识之Java语言概述

    2023-11-28 04:36:35
  • Flutter 底部弹窗如何实现多项选择

    2023-06-24 17:08:17
  • Studio 编译报错:compileSdkVersion 'android-24' requires JDK 1.8 or later to compile.的解决办法

    2023-06-19 17:19:41
  • Proxy实现AOP切面编程案例

    2023-07-23 06:44:52
  • 详解C++ STL模拟实现forward_list

    2023-06-21 02:36:04
  • Java实现文件切割拼接的实现代码

    2022-04-15 08:10:03
  • 解析Java和Eclipse中加载本地库(.dll文件)的详细说明

    2023-11-11 01:23:31
  • 剖析Java中阻塞队列的实现原理及应用场景

    2023-09-01 17:33:07
  • SpringBoot项目中新增脱敏功能的实例代码

    2023-11-24 01:32:14
  • springboot2.x整合tkmapper的示例代码

    2021-09-19 11:56:59
  • 超详细的Spring Boot入门笔记(总结)

    2022-10-26 18:44:21
  • Android实现简易浏览器遇到问题的解决方法

    2023-06-15 21:47:56
  • SpringBoot过滤器的使用

    2023-08-28 21:28:56
  • asp之家 软件编程 m.aspxhome.com