1.概念
1.1 介绍
官网地址:
https://spring.io/
Spring Boot
是由
Pivotal
团队提供的全新框架,其设计目的是用来简化新
Spring
应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot
致力于 在蓬勃发展的快速应用开发领域成为领导者。
2013
年,
Pivotal
团队开始研发
SpringBoot
。
2014
年
4
月,发布全新开源的轻量级框架的第一个
SpringBoot
版本。
原博文:
https://www.sohu.com/a/286995880_684445
1.2 特点
为什么要学习SpringBoot?
SpringBoot
是为了简化
Spring
应用的创建、运行、调试、部署等一系列问题而诞生的产物,
自动装配
的特性 让我们可以更好的关注业务本身而不是外部的XML
配置,我们只需遵循规范,引入相关的依赖就可以轻易的 搭建出一个 WEB
工程 未接触SpringBoot
之前,搭建一个普通的
WEB
工程往往需要花费
30
分钟左右,如果遇到点奇葩的问题耽搁的 时间会更长一点,但自从用了SpringBoot
后,真正体会到什么叫分分钟搭建一个
WEB,使用
SpringBoot
后发现一切是如此的简单(还记得被
JAR
包,
xml
支配的恐惧吗,如 今都可以说 good bye
)
在传统的一些框架中(
SSH
、
SSM
、
Servlet/JSP
) 虽然功能很强大但是配置起来太麻烦了,相比
python
或者 php ,
Java
就略显臃肿,主要问题集中在两点:
1. 复杂的配置文件:
项目之间各种配置文件铺天盖地,在开发的过程中占用了大量的时间,并且需要做这些配置文件进行维护,整个项目感觉特别复杂,并且Java
代码和配置文件之间的切换开发,给程序人员带来很大的负担。
2. 各种依赖比较混乱:
主要问题就是版本冲突,不同技术的版本需要我们知道哪些版本存在冲突问题,一旦使用错误就需要重新再去下载库进行依赖。
而
Spring Boot
简化了基于
Spring
的应用开发,只需要一个
”run”
就创建了一个独立的、生产级别的
Spring
应 用,Spring boot
为
Spring
平台及第三方提供了开箱即用的设置
(
默认设置的包就是启动器
starter)
,这样我们 就可以简单的开始。Spring Boot
主张,用最少的配置做更多的事。如果我们创建一个
Java
应用,并使用
java -jar启动,就能得到一个生产级别的
web
工程。
特点:
1.
创建独立的 Spring 应用程序
2.
直接嵌入Tomcat、Jetty或Undertow(无需部署WAR文件)
3.
提供自以为是的“入门”依赖项以简化您的构建配置
4.
尽可能自动配置 Spring 和 3rd 方库
5.
提供生产就绪功能,例如指标、运行状况检查和外部化配置
6.
完全不需要代码生成,也不需要 XML 配置
SpringBoot = Spring+SpringMVC
2. 构建SpringBoot项目
2.1 start.spring.io
2.2 Spring Initializr
选择依赖
创建完成结构
2.3 运行项目
点击选择启动项目工程
观察启动日志
2.4 前后台交互
创建控制层
重启项目并访问
http://localhost:8080/example/show
输出:
至此 前后台交互完成!!
2.5 目录结构
工程结构
pom文件
分析依赖!
2.6 自定义Banner
SpringBoot
启动的时候我们可以看到如下内容,这一块其实是可以自定义的哦,而且在
2.X
版本中,它支持 的格式从文本扩展到**banner.txt
、
banner.jpg
、
banner.gif
、
banner.jpeg
等等,只需要在
resouces**
目录下添加指定命名的文件即可
重启运行
2.7 查看SpringBoot默认提供的Bean
2.8 手动注入bean
运行查看是否注入
控制层可以注解读取
2.9 初窥配置文件
从启动日志中可以发现,
SpringBoot
默认的端口是
8080
,那么如果端口被占用了怎么办呢?不要慌,问题 不大,配置文件分分钟解决你的困扰…
重启测试
2.10 关于starter
stater
参赛人、发令员
Spring Boot
中的
starter
只是把我们某一模块,比如
web
开发时所需要的所有
JAR
包打包好给我们而已。不 过它的厉害之处在于,能自动把配置文件搞好,不用我们手动配置。
spring-boot-starter-web
spring-boot-starter-parent
这是
Spring Boot
的父级依赖,这样当前的项目就是
Spring Boot
项目了。
spring-boot-starter-parent
是一个特殊的 starter
。
功能 1:默认依赖配置(绝对兼容)
它用来提供相关的
Maven
默认依赖。使用它之后,常用的包依赖可以省去
version
标签,当我们搭建
web 应用的时候,
可以像下面这样添加
spring-boot-starter-web
依赖:
但是这种允许默认不填写版本号的依赖也必须是
boot
中默认给定的,如果没有默认给定,还是需要手动填写 的。
功能 2:默认环境配置(绝对兼容)
默认使用
Java8
,可添加以下配置修改版本
默认使用
UTF-8
编码,可添加以下配置修改编码
等
...
功能 3:资源过滤
识别默认配置文件
过滤打包内容(打包的时候把 src/main/resources 下所有文件都打包到包中)
3. YAML文件
在我们翻阅
stater
的过程中,也应该发现配置文件除了可是使用
application*.properties
类型,还可以使用后 缀为.yml
或
.yaml
类型,这种类型相比
properties
类型支持了集合对象等数据,但是前提也必须是application*才能被
Spring
扫描到。
配置环境基础信息,创建application.yaml
3.1 语法规则
1.
大小写敏感
2.
使用缩进表示层级关系
3.
缩进时不允许使用Tab键,只允许使用空格。
4.
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
5.
可以使用 "-小写字母" 或 "_小写字母"来 代替 "大写字母",如 userName 与 user-name ,user_name 含 义是一样的
6.
key: value 格式书写 key 后面跟着冒号,再后面跟着一个空格,然后是值
7.
注释使用#
3.2 数据类型
YAML 支持的数据结构有三种
1.
普通的值(数字,字符串,布尔)
2.
对象、Map (属性和值) (键值对)
3.
数组 (List、Set)
测试代码
读取配置文件
关于直接获取数组类型
读取
yml
中配置的一个数组,通过
@Vaule
一直获取不到,通过一番资料的查询,才彻底清楚了
@Vaule
的使用情况。
在
Spring
中读取配置文件的快捷方法常见的有两种,一个是通过
@Vaule
注解进行单一字段的注入,另外一种方法就是通过@ConfigurationProperties
注解来进行批量注入。
声明配置类
使用方法