springboot手写一个自己的starter源码

 更新时间:2019年06月07日 09:45:01   投稿:laozhang  
在本篇文章里小编给大家整理了关于springboot手写一个自己的starter源码的全部知识点内容,需要的朋友们学习下。

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

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

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

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

1.创建一个空的项目

  

 

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

 

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

  

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

 

导入依赖之后就是这样的

 

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

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

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

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

下面看我的目录结构

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

第一个:HelloProperties

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

第三个HelloWorldAutoconfiguration

第四个.spring.factories文件

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

另外一个starter一样的操作

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

 测试:

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

随便写个controller测试一下

测试成功

  

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

相关文章

  • Java Method类及invoke方法原理解析

    Java Method类及invoke方法原理解析

    这篇文章主要介绍了Java Method类及invoke方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 详解Mybatis中常用的约束文件

    详解Mybatis中常用的约束文件

    这篇文章主要介绍了详解Mybatis中常用的约束文件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Spring Boot Actuator自定义健康检查教程

    Spring Boot Actuator自定义健康检查教程

    这篇文章主要介绍了Spring Boot Actuator自定义健康检查教程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java面向对象程序设计:继承,多态用法实例分析

    Java面向对象程序设计:继承,多态用法实例分析

    这篇文章主要介绍了Java面向对象程序设计:继承,多态用法,结合实例形式分析了java继承与多态的相关概念、原理、实现方法与操作注意事项,需要的朋友可以参考下
    2020-04-04
  • java实现四子棋游戏

    java实现四子棋游戏

    这篇文章主要为大家详细介绍了java实现四子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • 一文让你彻底明白Java中的值传递和引用传递

    一文让你彻底明白Java中的值传递和引用传递

    这篇文章主要给大家介绍了关于Java中值传递和引用传递的相关资料,值传递是指在调用函数时将实际参数复制一份传递到函数中,引用传递是指在调用函数时将实际参数的引用直接传递到函数中,需要的朋友可以参考下
    2023-10-10
  • Java中迭代器Iterator的使用解析

    Java中迭代器Iterator的使用解析

    Java采用了迭代器来为各种容器提供了公共的操作接口,下面通过本文给大家分享Java中迭代器Iterator的使用解析,需要的朋友参考下吧
    2017-09-09
  • springboot接入netty实现在线统计人数

    springboot接入netty实现在线统计人数

    本文主要介绍了springboot接入netty实现在线统计人数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • java实现Floyd算法

    java实现Floyd算法

    这篇文章主要为大家详细介绍了java实现Floyd算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Java详细讲解Math和Random类中有哪些常用方法

    Java详细讲解Math和Random类中有哪些常用方法

    Math类位于java.lang包中,包含很多用于科学计算的类方法,这些方法可以直接通过类名调用。Random类获取随机数,位于java.util包中,本篇带你了解它们的常用方法
    2022-05-05

最新评论