**Spring的缺点:
配置繁琐(写xml文件啊还是比较多的)
依赖繁琐(即使是用Maven导坐标,也多)

SpringBoot 功能:
1.自动配置
2.起步依赖:依赖传递
3.辅助功能(比如嵌入式服务器等)

//Springboot简化开发,约定 优于配置 SpringBoot提供了一种快速开发Spring项目的方式,而不是对Spring功能上的增强。

SpringBoot在创建项目时,默认使用jar的打包方式。
SpringBoot的引导类,是项目入口,运行main方法就可以启动项目。

/先了解起步依赖原理,大概的意思是说由于依赖传递,引入起步依赖后,你相对应的jar包就会自动导入,不会造成版本冲突,就是这么的方便快捷。/

起步依赖原理:在spring-boot-starter-parent中定义了各种技术的版本信息,组合了一套最优搭配的技术版本。
在各种starter中,定义了完成该功能需要的坐标合集,其中大部分版本信息来自于父工程。我们的工程继承parent,引入starter后,通过依赖传递,就可以简单方便获得需要的jar包,并且不会存在版本冲突等问题。

/接下来了解一下配置文件/
SpringBoot
配置文件分类
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用 application.propesties或者application.yml(application.yaml)进行配置。
SpringBoot提供了2种配置文件类型:properteis和yml/yaml
默认配置文件名称:application
在同一级目录下优先级为:properties>yml>yaml

/接下来了解一下配置文件中的yml/

YAML文件的扩展名可以使用.yml或者.yaml

YAML:基本语法
1.大小写敏感
2.数据值前边必须有空格
3.作为分隔符使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格(各个系统Tab对应的空格数目可能不同,导致层次混乱)。缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
5.#表示注释,从这个字符一直到行尾,都会被解析器忽略。
示例:server:
port: 8080
address: 127.0.0.1
name: abc

YAML:数据格式:
1.对象(map):键值对的集合。
person:
name: zhangsan
#行内写法
person:{name: zhangsan}

说明:就是键和值对应的意思,可以分行写,也可以写在一行内,遵循YAML语法格式即可,注意空格。

2.数组:一组按次序排列的值
address:
-beijing
-shanghai
#行内写法
address: [beijing,shanghai]

说明:就是一个属性可以有多个值的意思,注意空格。

3.纯量:单个的、不可再分的值
msg1:‘hello \n world’#不会识别转义字符msg2: “hello \n world”

/接下来了解配置文件中的profile/
profile
我们在开发SpringBoot应用时,通常同一套程序会被安装到不同环境,比如开发、测试、生产等。其中数据库地址、服务器端口等等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。profile功能就是用来进行动态配置切换的。

profile配置方式:
1.多profile文件方式,激活即可
2.yml多文档方式(跟上面这种差不多,一个文件里分成几个段而已)在yml中使用 —分隔不同配置

3.profile激活方式配置文件:
a.在配置文件中配置:springprofiles.active=dev

b.虚拟机参数:在VMoptions指定:-Dspringprofiles.active=dev

c.命令行参数:java-jar xxxjar–springprofiles.active=dev

/接着来看看如何读取配置文件/

参数引用:${key}

读取配置文件内容:(也就是有些我们自己写的内容,idea无法自动识别,我们要让它加载识别)
第一种方式:@Value注解,在Controller类中你定义来加载识别
例:@Value("${person.age}")

@Value("${address[0])")

第二种: Environment(这种大概是用一个Environment类的对象来调用一个getProperty方法,方法参数填的就是你要引用的,跟上面一样)

第三种: @ConngurationProperties
大概是写一个属性的配置类
**