SpringBoot:
SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想
(不是对Spring功能的增强)
Spring缺点:1.配置繁琐 2.依赖繁琐
SpringBoot功能:
1.自动配置
2.起步依赖(依赖传递)
3.辅助功能
SpringBoot起步依赖:
在spring-boot-starter-parent中定义了各种技术的版本信息,组合一套最优搭配的技术版本
在starter中,定义了完成该功能需要的坐标合计,大部分版本信息来自父工程
SpringBoot配置:
配置文件分类:
SpringBoot是基于约定的,所有很多配置都有默认值,
可以使用application.properties或者application.yml(application.yaml)进行配置
properties:server.port=8080
yml:server:
port: 8080
同级目录下优先级:properties > yml > yaml
YAML:
YAML Ain't Markup Language,是一种直观的能够被电脑识别的数据序列化格式,并且容易
被人阅读,容易和脚本语言交互,YML文件是以数据为核心的,比传统的xml方式更加简洁
基本语法:
大小写敏感
数据值前面必须有空格作为分隔符
使用缩进标识层级关系
#表示注释
数据格式:
对象(map):键值对的集合
数组:一组按次序排列的值
纯量:单个的、不可再分的值(单引忽略转义字符、双引识别)
参数引用:${key}
获取数据:
1.@Value("${key}")
2.Environment @Autowired
3.@ConfigurationProperties(prefix = "key")
profile:
动态配置切换
profile配置方式:
多profile文件方式
yml多文档方式:在yml中使用 ---分隔不同配置
profile激活方式:
配置文件:在配置文件中配置:spring.profiles.active=...
虚拟机参数:在VM options指定:--Dspring.profiles.active=...
命令行参数:java-jar xxx.jar --spring.profiles.active=...
内部配置加载顺序:
1.file:./config/ :在当前项目下的/config目录下
2.file:./ :在当前项目的根目录
3.classpath:/config/ :classpath的/config目录下
4.classpath:/ :classpath的根目录
加载顺序为上文排列顺序,高优先级配置的属性会生效
外部配置加载顺序:
参照官网文件
SpringBoot高级:
原理:
自动配置:
Condition:Spring4.0增加的条件判断功能,通过实现选择性的创建Bean操作
自定义条件:
1.定义条件类:自定义类实现Condition接口,重写matches方法,在matches方法中
进行逻辑判断,返回boolean值。matches方法有两个参数:
*context:上下文对象,可以获取属性值,获取类加载器,获取BeanFactory
*metadata:元数据对象,用于获取注解属性
2.判断条件:在初始化Bean时,使用@Conditional(条件类.class)注解
切换内置Web服务器
@Enable*注解:
这些注解是用于动态启用某些功能的,
@import注解,加载类,这些类会被Spring创建并放入IOC容器
用法:1.导入Bean
2.导入配置类
3.导入importSelector的实现类
4.导入importBeanDefinitionRegistrar的实现类
@EnableAutoConfiguration注解
内部使用@import(AutoCoinfigurationimportSelector.class)来加载配置类
配置文件位置:meta-INF/spring.factories,配置文件中定义了大量配置类
SpringBoot应用启动时,会自动加载这些配置类,初始化Bean
并不是所有的Bean都会被初始化,在配置类中使用Condition来加载满足条件的Bean
SpringBoot监控:
Actuator:
1.导入依赖坐标
2.访问/actuator
Spring Boot Admin 管理和监控SpringBoot应用程序
有客户端和服务端
SpringBoot项目部署:
.jar和.war打包方式启动