Spring-boot
概念:SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想.2014 年 4 月,Spring Boot 1.0.0 发布。Spring的顶级项目之一(https://spring.io)
定义:
- 快速搭建Spring项目的工具
功能:
- 快速启动:内置了各种应用服务器,默认使用tomcat
- 自动配置: 控制Springboot内部的程序那些生效
- 依赖管理: 自动管理JAR的版本
- 统一监控: 监控服务的运行状态
Spring缺点
-
配置繁琐:Spring的组件代码是轻量级的,但它的配置却是重量级的
-
依赖繁琐:项目的依赖管理也是十分耗时耗力的事情
Spring-boot项目中配置文件中的优先级
SpringBoot的底层实现原理
通过@EnableAutoConfiguration注解加载Springboot内置的自动初始化类(加载什么类是配置在spring.factories),这这些类中在基于spring4.0提供的Condition接口进行Bean的初始化。
SpringBoot 起步依赖原理简单分析
- 在spring-boot-starter-parent中定义了各种技术的版本信息,组合了一套最优搭配的技术版本
- 在各种starter中,定义了完成该功能需要的依赖合集,其中大部分版本信息来自于父工程
- 工程继承parent,引入starter后,通过依赖传递,就可以简单方便获得需要的jar包,并且不会存在 版本冲突等问题。
Spring-boot配置文件分类
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用 application.properties或者application.yml(application.yaml)进行配置
-
properties
server.port=8080
-
yml
server: port: 8080
yml/yaml
-
YAML文件的扩展名可以使用.yml或者.yaml。
-
简洁,以数据为核心
-
基本语法
- 大小写敏感
- 使用缩进表示层级关系
- 数据值前边必须有空格,作为分隔符
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- # 表示注释,从这个字符一直到行尾,都会被解析器忽略
server: port: 8080 address: 127.0.0.1 name: abc
yml数据格式
-
对象(map):键值对的集合
person: name: zhangsan # 行内写法 person: {name: zhangsan}
-
数组:一组按次序排列的值
address: - beijing - shanghai # 行内写法 address: [beijing,shanghai]
-
纯量:单个的、不可再分的值
msg1: 'hello \n world' # 单引忽略转义字符 msg2: "hello \n world" # 双引识别转义字符
yml数据应用
name: lisi
person:
name: ${name} # 引用上边定义的name值
profile
-
profile是用来完成不同环境下,配置动态切换功能的。
-
profile配置方式
-
多profile文件方式:提供多个配置文件,每个代表一种环境。
- application-dev.properties/yml 开发环境
- application-test.properties/yml 测试环境
- application-pro.properties/yml 生产环境
-
yml多文档方式:
- 在yml中使用 — 分隔不同配置
-
-
profile激活方式
- 配置文件: 再配置文件中配置:spring.profiles.active=dev
- 虚拟机参数:在VM options 指定:-Dspring.profiles.active=dev
- 命令行参数:java –jar xxx.jar --spring.profiles.active=dev
配置加载顺序
-
内部配置
- file:./config/:当前项目下的/config目录下
- file:./ :当前项目的根目录
- classpath:/config/:classpath的/config目录
- classpath:/ :classpath的根目录
-
外部配置