00:00
前面我们通过编写一个boot的hello word,我们体会到了它的强大与便捷,那它的这些功能呢,都基于spring boot,我们体供的两大优秀特性,一个是依赖管理,还有一个自动配置,那我们先来说一下spring boot的依赖管理机制,那我们现在看到我们这个hello word最大特点就是我们呢在它的这个po文件里边是引入了一个spring boot的这个副副项目,然后呢,我们只导入了一个叫start web这个依赖,然后我们所有的这些包全部就进来了,那我们开发的整个过程中,我们无需关心任何的导包问题,我就可以直接使用了。那为什么呢?首先我们来分析它的这个负项,每一个spring BOO工程它呢都有这么一个负项,Parent把这个呢拿过来,这个副项目呢,它的作用是什么?我们可以来说一下这个负项目,我们如果学过me,我们都知道,我们负项目呢,一般都是来做,我们称为叫依赖。
01:00
管理的,那么负项目里边呢,可能会声明非常多的依赖,子项目呢,只要继承了这个负项目子项目以后写依赖就不需要版本号了,所以我们能看到的特点就是我们这个me问的项目,我们继承了这个负项目是2.3.4的spring book版本,我们在下边,即使是应其他所有依赖我们在这呢,都没写过版本号,所以副项目呢,是来做依赖管理的,那这个依赖管理他又管理了什么东西,甚至于呢,我们引入的这些炸包,我们引了好多从日志包到我们这个杰森的包,包括我们的这个Tom k,还有我们的这个spring的一些核心包,它的这些版本都是谁控制的,你们可以点进来看一下,来到他的这个负项目,这个负项目呢,我们发现他这儿呢,还有一个负项目,所以我们把这个再拿来,然后它的负项目。它的负项目,它的负项目呢,就是这个,然后呢,我们再来点进叫spring BOO dependences点进来,点进来以后呢,我们看到诶,下边有一个properties里边呢,声明了几乎我们开发中常用的这些炸包的所有版本,从大到小,有我们active MQ的,包括我们做切面的PE接的,包括我们这个comments这些工具包的,还有我们下边的啊黑carry,我们的这个数据源的,包括我们这下边一大堆我们开发中GSTL的E表达式的这些所有我们常用的这些依赖的炸包全部都在这有,包括我们spring的相关的这个依赖的版本号在这也有,也就是说呢,我们在spring boot dependences里边声明了很多炸包的依赖,我们来往下翻看,我们这呢,有很多炸包的依赖,所以我们不用写白号,比如我们以这个为例,叫log bank,那log bank呢,我们来在这。
02:50
搜索一下看有没有log bank这个做日志的,哎,我们这个做日志的呢,在这儿有,我们来找log bank club,呃,Log bank,然后呢,Log bank的版本是多少,我们来搜索一下,那log bank log bank的这个版本呢,是123,哎这一块呢,就是123,所以没什么问题,也就是说我们副项目它的主要的核心功能还就是我们以前说的依赖管理,它呢几乎几乎,然后呢,声明了,声明了我们所有开发中。
03:23
常用的,咱们这个炸的。的咱们这个版本号来常用的我们这个依赖的版本号,所以呢,我们无需写版本号,比如我们在做数据库开发,我们要赢MYSQL驱动的时候,那我们看一下这一块,它有没有把MYSQL纳入其中,诶也有mysl version,我可以看一下CTRLCCTRLV走,然后呢,我们看发现mysl connect Java这个呢,我们也不用写版本号,那我举一个例子,我们放在这儿,假设我们某一天我要开发呃,要连接MYSQ了,我想要一个驱动,那我就直接把这个写上来。
04:02
走,大家来看一下,我需不需要写依赖版本呢,我在这儿不用写,然后呢,这也没报错,我们来找我们引入的这个马SQL的驱动。我们把这个关掉,再打开一下。我们来看一下我们引入的这个马色库驱动在哪呢?在这儿,诶是8021没问题,就是它在这儿来进行依赖控制的版本,我们确认一下MYSQ在这控制的这个version是多少CTRLC。MySQL wash8021,所以呢,我们就是说在依赖管理里边副项目把我们常用开发中的这些炸包版本都帮我们控好了,而且这个版本呢,一般就是当前我们boot它支持的这个版本,那万一我们开发中要变版本怎么办?因为我们经常呢,它给我们自动仲裁的这个版本,我们可以把这个也称为s boot的自动版本仲裁机制,当我们把所有场景的这些版本号全部呢都规定好,但是我们某一天如果我去来用8021的这个MYSQL版本,我的MYSL数据库就得是MYSQL8相关的这个数据库,但是我呢,MYSQL我一般还是装五或者六,那我怎么办呢?我就要改MYSQ驱动,那改MYSQL驱动该怎么办?就是我们如果真的需要到修改我们自定义的这些,我们可以搜索买仓库。
05:25
MVNPSY我们来到me问仓库,我们来找一下MY色库的驱动,我们来找到我们满意的MY色库驱动,MY色q connector好,Java来找一下我们版本,比如呢,我们现在就想用五版本的55143,那怎么办呢?大家注意在boot版本仲裁里边MYS版本它是用一个属性叫MYSQ点我式,所以如果我们某一天我们对他仲裁的这个版本不满意,我们想修改,来到我们的这个项目的配置文件里边,我们也写一个叫properties来声明上一些属性不properties好,这个属性里边呢,我们就来修改马S的版本,因为它马SL版本号叫MYSL,我什么什么,然后呢,接下来把我们满意的版本写进去。
06:15
现在呢,是5143CTRLC来粘贴过来,好,我们把这个5143写过去,为了保险起见,你可以在这点一下刷新,我们可以再来确认一下我们引入的这个马SQ版本是什么,诶我们变成了5143,也就说如果我们想要自定义修改我们版本也是使用这种机制,我们得首先看底层人家规定这个去这个依赖的时候,人家是用什么属性来规定的,所以我们想要自定义也可以我们自定义修改版本号呢,首先我们要做的两步是查看咱们这个spring boot dependences里边规定的当前。依赖的版本,然后呢,我们看到它当前依赖规定版本用的咱们这个K,用的咱们这个K,然后呢,我们在第二步是在当前项目里边,在当前这个小技巧呢,大家也一定要掌握,在当前项目里边,然后呢重写,重写我们这个配置就行了,重写配置,那么当前项目的这个重写示例我给大家拿过来,其实这是我们没给我们提供的特性,对吧?就近优先原则,那我只要当前项目里边我就近配置了MYSQ的版本号,那就使用我的,否则采用负项目依赖管理的,这是我们说的,第一个我们做依赖管理和版本仲裁。第二个是我们开发期间的各种场景启动器,我们现在看到我们开发一个web应用,无需我们关心到底要导哪些包,要导spring的哪些包还是什么的哪些包,我们只需要导入一个,好,我把这个马S的这个我就去。
07:58
了。
08:00
注释掉吧,我们把这个注释掉,我们呢现在只需要导入一个,导入一个什么呢?叫spring boot start web,那未来我们在spring boot里边会见到非常多的以spring boot start什么什么命名的东西,包括我们查看官方文档啊,我们要学会看官方文档,我们入门呢已经学完了,我们来到这个叫using spring BOO在这个里边。在这个里边呢,其中在第一章节我们系统构建里边,其中就有starter,官方呢给我们介绍所有官方的这个start,所starter的意思是什么,它starter是一组我们这个依赖的这个集合描述,也就说呢,我们一般只要引入一个starter,它的整个完整开发场景就被全部引入了,这个场景里边所有的依赖全部都进来了,而且呢,官方的start它的命名方式是spring boot starter杠星,这个星呢就代表的当前某些场景,所以呢,我们官方一般我们都会见到。见到很多这种boot start,什么这个星呢,就代表就代表某种场景,这种场景呢,我们只要引入了这些start,只要引入start。
09:15
然后呢,我们这个场景,这个场景的所有常规需要的依赖,我们都常规需要的依赖我们都会自动引入。那自动它为什么会自动引入呢?其实就非常简单,这还是门稳的特性,因为这个start web他说了,他要引这么一堆,所以呢,自然按照依赖传递原则,那我们依赖的这个东西它还有依赖,那就继续往进行就行了,所以呢,这是我们说的start,我们会未来见到官方很多的start,举一个例子,So boot呢,列举到了它项目里边所有的start,我们有做AMKP,就是高级消息队列协议的start,包括呢,我们做批处理的,我们做缓存的,每一种呢,都是一种场景,我们来做数据库开发JDDC的,我们来做GPA啊,我们以spring data GPA来开发数据库的,包括我们来开发red的等等等等等等,几乎我们常用的开发场景s boot呢,都给我们有抽取,好,我们可以把这个啊,官方列表大家呢?没事就来关注一下s boot到底有多少个start?
10:23
都在这Bo所有的场景,所有所有支持的场景,支持的场景呢,大家都可以在这个文档里边找到,这是BOO所有能支持的场景,当然也有一些第三方starter,也就是说呢,你觉得spring给你的这些场景还不能满足你的开发,那怎么办呢?你自己可以自定义一些start create your all start,你也可以创建自己的start,当然这个是高阶知识,我们后来再说,但是呢,Boot推荐我们自己创建的start呢,千万不要以boot这个命名开始,Boot命名开始的呢,是人家官方的,而人家推荐的,你的命名应该是这样子的。
11:07
Control c,所以呢,未来我们再来建到的,建到的这些starter就是新spring boot starter这个呢,一般都是第三方为我们提供的简化开发的场景启动器,第三方为我们提供的简化咱们这个开发的场景启动器,也要说呢,我们未来我们再来spring boot深入学习的时候,我们想要开发什么应用,我们一般只需要引入一个什么什么starter,然后呢,这个里边依赖的所有东西全套给我们引擎,比如w boot这个starter里边好,我们可我可以不用点进来,我直接使用咱们这个工具的这个分析依赖数点开。我们就能看到,我们就引了一个spring boot start web,它帮我们引入了spring mvc spring的web开发模块,包括引入了Tom KT的场景,包括呢杰son开发的场景,诶这个杰森开发引入了一大堆的杰森包,Tomcat的场景又引入了TOMCAT1大堆的包,还有spring boot,所有我们这个场景启动器最基本的依赖就是spring boot starter,我们可以来给大家点进来,你的任何一个我们spring boot starter什么什么我们都成为这个场景启动器,点进来每一个场景启动器最基本的场景就是这个所有最基本的依赖就叫spring boot starter。
12:32
这是我们的第五个所有场景启动器,场景启动器依赖,最最底层的依赖,最底层的依赖都会依赖一个这个,这个呢,其实就是我们未来说的boot自动配置的核心依赖,那我们看到呢,Spring boot给我们来做了依赖管理,也做了版本仲裁,也就是我们以后呢,我们在应用开发的时候,我们无需再来写版本号,对吧,我们以后以后引入引入咱们这个依赖,我们默认都可以不写版本号,但是这个事情呢,它不是绝对的,为什么呢?因为我们刚才也分析了,不写版本号的一大效果是由于spring boot dependencecies里边声明了你的这个依赖,但是呢,如果某一天你引入的一个这个依赖,你的引入的这个炸没在人家声明的这个。
13:32
啊,范围内,那当然你自己要写啊,所以呢,引入的非咱们这个版本仲裁的,非版本仲裁的账字要要一定要写咱们这个版本号,所以呢,有了spring BOO,那给我们带来的一大便利就是在依赖管理上,我们以后要开发哪个场景,就参照官方文档导入它的这个场景启动器就行了,而这个场景呢,它到底会导入哪些东西,哎,你只要一导进来,你就全部都能分析到,所以这是我们spring boot给我们简化的第一个叫我们的依赖管理。
我来说两句