大家好,我是小小刀,又和大家见面啦,今天开始我们java学习的新篇章,欢迎一起学习!
熟悉的开场白
在上篇整理篇中我们有聊到,以后的学习篇,我们会分阶段来写,让基础的同学能跟着练练基础,同时又能看到这个知识点的扩展,今天我们就从搭建web工程开始一步一步的往后,这个web工程是用来展示知识点的,把我们群里分享的知识点存起来,形成一个串联的关系,这样以后我们做成一个可视化的界面,整理自己的知识盲区非常有用,能更好的形成一个知识体系,下面我们一起开始吧!
小试牛刀
打开网址:https://start.spring.io/
1550757540243- 可以选择用maven 还是 gradle 构建
无论哪种构建方式,对jar包的管理还是那三个坐标,groupId , artifactId,versionId ,插件也是基于这三个坐标。只不过两者管理的语法不同,再细节的我也没有研究了,gradle国内资料比较少,但有名的spring源码也用gradle构建了,所以喜欢折腾的朋友可以试试gradle。
- springBoot版本
有SNAPSHOT的是快照版,功能可能不是很完善,一般选非SNAPSHOT的版本
- 项目坐标
如每个jar包都有三个坐标值一样,我们的项目日后也会打成jar包或者是war包,也需要同样的坐标的,group一般用做项目名(com.fenxiangtech.boot),artiface一般用做模块名(study),点开#5 还可以看到version选项,一般开发就用SNAPSHOT
- 项目依赖
以前用spring开发的同学都知道,为了一个功能要到处找依赖,然后复制dependency到pom.xml里面,springboot把一个功能依赖的jar包做了打包,只用一个依赖就可以解决问题,可以选常用的功能模块,如mybatis , redis , jdbc , web 等等
- 切换到完整模式
在完整模式下可以看到切换java版本等选项,推荐java 11 , 就跟着最新的学吧,这是一个长期支持的版本。以后肯定会切换到这个版本的。
- 一键生成
都选完之后,就可以一键生成一个简单的可运行程序。大家可以随便选了试一试
我们的初级扩展就是,一键生成一个可运行的程序,并运行起来!
中试牛刀
小伙伴们如果还记得java故事之梦这篇文章的话,我们在里面有提及到建设者模式,现在我们一起起看看这个springboot的生成过程,是不是也很像建造者模式,先是各种配置,最后一个build生成搞定,所以我们的中级扩展就是用建造者模式模拟下springboot的一键生成
仔细想一想,各种配置有那么多的选项,这组合在一起可能性也太多了,那我们的导演类里面要写这么多种方法吗,所以应该不是纯建造者模式,如果换做是我们来做这个事情,我们会怎么做呢?找一个模板,把对应位置空出来,初始化几个Map , 把选的配置和要放到文件里面的代码对应起来,这样根据页面的选择来更改模板,定义一个原形出来,然后根据选择的配置修改,这样就不会有这么多的方法了,这是原形模式?
后来再一想,这其实就是一个生成文件而已,不用任何设计模式,直接写代码的话也就一个判断,然根据配置取值,生成文件,打包成zip,然后response返回,所以一个功能可以有很多种实现,有兴趣的小伙伴可以自己试一试
大试牛刀
上面我们有说到过,springboot 帮忙把spring的依赖和配置简单化了,以前我们在spring中都是用的各种<bean>去注入,现在在springboot中只需要在 application.perporty中配置下就可以了,我们可以往深入想一下,springboot 是怎么做到的呢?
首先,依赖肯定是用maven/gradle帮忙管理的,所以starter项目应该也是一个maven/gradle的Springboot程序,在pom.xml把依赖都定义好,定义哪些?定义可以自动配置的,详情可以百度或自己实践,在小刀的公众号里面,从来没有可以直接复制能用的,抛砖引玉,还是希望大家能一起思考,这样才能有进步
然后就是配置类,定义前缀,给默认值等等,用@ConfigurationProperties
有配置,有依赖,下面就要加载配置,初始化实例,准备工作了,很多我们在引用starter之后,没有配置bean,就可以直接用里面的功能了,就是这一步,starter里面帮我们装配好了bean 并实例化,所以我们才可以直接用
最后就是用spring.factories
告诉spring , 哪些类要自动装配。思路如上,扩展就是自己实现一个Springboot 的 starter
最后还是要说两句
在小刀的文章里面,我希望呈现给大家的是一种思路,引发大家思考动手的思路,很多人在群里问要怎么学,路只有一条,那就是多动手!在这里和大家分享一个小伙伴的故事
image-20190222130935085从第一张可以看出来,一个才入门的小白,半个月的时间,成长的速度令人惊讶! 学习也是如此,唯有静下心来,跟着上面的思路,我们一步一步的去探索,去沉淀,这样才能学有所得,真正拿下这个知识点!
小刀和小伙伴们在群里等你哦〜 进群请加小刀微信: best396975802
公众号:java技术大本营
网友评论