简介
Spring Boot是一个简化Spring开发的框架。用来监护spring应用开发,约定大于配置,去繁就简,just run 就能创建一个独立的,产品级的应用。
我们在使用Spring Boot时只需要配置相应的Spring Boot就可以用所有的Spring组件,简单的说,spring boot就是整合了很多优秀的框架,不用我们自己手动的去写一堆xml配置然后进行配置。从本质上来说,Spring Boot就是Spring,它做了那些没有它你也会去做的Spring Bean配置。
优点
快速创建独立运行的Spring项目以及与主流框架集成
使用嵌入式的servlet容器,应用无需打成WAR包
starters自动依赖与版本控制
大量的自动配置,简化开发,也可以修改默认值
无需配置XML,无代码生成,开箱即用
准生产环境的运行应用监控
与云计算的天然集成
单体应用与微服务
单体应用是把所有的应用模块都写在一个应用中,导致项目越写越大,模块之间的耦合度也会越来越高。微服务是一种架构风格,用微服务可以将应用的模块单独部署,对不同的模块进行不同的管理操作,不同的模块生成小型服务,每个功能元素最后都可以成为一个可以独立替换、独立升级的功能单元,各个小型服务之间通过http进行通信。
Spring Boot的核心特点
微服务:
使用Spring Boot可以生成独立的微服务功能单元
自动配置:
针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置
起步依赖:
告诉Spring Boot需要什么功能,它就能引入需要的库。
命令行界面:
这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。
Actuator:
让你能够深入运行中的Spring Boot应用程序。
简单案例:使用maven创建HelloWorld项目
案例解析—相应的问题
为什么只配置一个Spring Boot依赖:
spring boot为我们提供了简化企业级开发绝大多数场景的starter pom(启动器),只要引入了相应场景的starter pom,相关技术的绝大部们配置将会消除(自动配置),从而简化我们开发, 业务中我们将会使用到spring boot为我们自动配置bean
入口类的@SpringBootApplication注解:
- 程序从卖弄方法开始运行
- 使用springApplication.run()加载主程序类
- 主程序需要标注@SpringBootApplication
- @EnableAutoConfigtion是核心注解
- @Import导入所有的自动配置场景
- @AutoConfigurationPackage定义默认的包扫描规则
- 程序启动扫描加载主程序类所在的包以及下面所有子包的组件
AutoConfigurationPackage:
自动扫描问题@ SpringBootApplication标记的主类,在主类所在包或者所在的子包下面找相应的控制类,然后根据相应的注解自动配置相应的项目所需的bean
如何快速新建Spring Boot项目
- 注意创建Spring Boot时注意网络连接的问题,保持网络畅通。点击New File,选择Project选择Spring Initializr,加载完成后查看相应的JDK版本是否合适,确保后点击next
- 设置项目的GroupID和Artifact。选择相应的语言和要生成的jar包或者war包以及JDK版本
- 勾选创建项目所需要的依赖,比如数据库,web等依赖,这里我们简单的介绍,不做具体的详解,就选择一个web依赖
- 选择完毕后,点击finish完成新建项目等待项目新建完成。
- 创建完毕后,保持创建的结构是这个形式即可。
- 创建项目完毕后,根据上面的案例简单的创建一个项目测试一下,测试通过即可。
Spring Boot的配置文件
使用Spring Boot配置文件首先需要有JavaBean类,然后才能在相应的配置文件中为javabean中的属性赋值
想要向JavaBean类中赋值,需要在javabean的类中添加相应的注解@Component和@ConfigurationProperties(prefix = “person”)。@Component将类添加进容器,@ConfigurationProperties配置文件中的数据注入到类中
Dog.java
public class Dog {private String name; private String age;}
Person.java
/**
- 将配置文件中配置的每一个属性的值,映射到这个组件中
- @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
- prefix = “person”:配置文件中哪个下面的所有属性进行一一映射
- 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
**/
@Component@ConfigurationProperties(prefix = “person”) public class Person { private String name; private Integer age; private Boolean sex; private Date birthday; private List list; private Map<String,Object> map;private Dog dog;}
配置文件:
配置文件名是固定的 application.properties 或application.yml
配置文件的作用:
修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好。
application.properties详解
#设置端口号为9999 server.port=9999
在application.properties中配置相应的属性之后,重新运行项目,发现服务器的端口启动号变成了9999,证明该段代码可以修改默认的8080端口。
application.properties
person.age=80 person.birthday=2019/02/5 person.list=a,b,c person.name=旺财 person.sex=false person.map.v1=k1 person.map.v2=k2 person.dog.name=jjj person.dog.age=6
注意:在使用application.properties文件向配置文件可能会出现乱码,注意改变编码格式为UTF-8
application.yml详解
YAML文件详解
(1) YAML文件定义:
YAML(YAML Ain’t Market Language)语言文件,以数据为中心,比json、XML等文件更加适合做配置文件
(2) YAML文件的基本语法:
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格
- 缩进的空格的数目不重要,只要相同层级的元素左对齐即可
- 大小写敏感
(3) YAML的值的写法: - k: v:字面直接来写;
- 字符串默认不用加上单引号或者双引号;
- “”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
- name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi
- ‘’:单引号;会转义特殊字符,特殊字符终只是一个普通的字符串数据
- name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
(4) YAML支持三种数据格式:对象,数组,基本数据类型
YAML的常用写法示例
application.xml
person:name: 张三 age: 20 sex: false birthday: 2019/01/11 list: - a - b map: -k1: v1 -k2: v2 -dog: {name: ww,age: 12} dog: name: ww age: 2
相应的配置文件和类编写完毕后,编辑测试类,运行,测试通过。