SpringBoot是一个快速开发的框架,能够帮助我们快速整合第三方框架(主要借助于 Maven 依赖关系),完全采用注解化,简化 XML 配置,内置嵌入 Http 服务器(Tomcat, Jetty),默认嵌入 Tomcat 服务器,最终以 Java 应用程序进行执行。
SpringBoot 的主要特点为:
1、简化maven,只需要- -两个依赖就可以实现Spring+ SpringMVC框架
2、自动配置Spring,快速构建项目,省去配置文件
3、零配置,注解化,约定大于配置,简化XML操作
4、对主流开发框架的无配置集成
SpringBoot环境要求:
1、jdk要求1.8以上
2、使用Maven进行开发
SpringBoot基础开发流程:
1、创建Maven项目
第一步新建一个Maven项目 New—>Maven Project

Next下一步

创建好的项目结构

2、引入SpringBoot的pom依赖
父模块依赖: spring- boot- starter-parent
启动依赖: spring- boot-starter-web
测试依赖: spring- boot-starter-test
热部署依赖: spring-boot- devtools
<!-- Spring Boot 启动父依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath />
</parent>
<!-- 项目设置:编码格式UTF-8 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--单元测试依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- Spring Boot SpringMVC框架依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot 测试依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用 devtools,需要重新引入 -->
<scope>true</scope><!-- 热部署 -->
</dependency>
</dependencies>
粘贴到如下位置

第三步创建SpringBoot入口函数
在项目的src/main/java目录下的com.ysd.demo.demo包中随意创建一个带main()方法的类(如类名为:App类),在类的上面添加注解 @SpringBootApplication, 并在 main()的方法体中添加SpringApplication.run(类名.class,args)。此时该类为 SpringBoot 的入口函数即主模块,内容如下:

新建一个class Ctrl+N 建一个class Finish完成

入口函数标记注解:@SpringBootApplication

第四步创建Controller控制器 ,创建控制器输出内容到页面效果展示

第五步运行项目 两种方法运行项目
1、右键Run As> Spring Boot App
2、在Boot Dashboard仪表板上 如下图

注意:1、默认端口号8080 2、默认访问地址没有项目名
运行结果如下


第六步打成jar包发布项目
1、在 pom.xml 文件中添加一个 SpringBoot 插件依赖
<build> <plugins> <!-- SpringBoot插件 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <!-- SpringBoot项目打包jar名称 --> <finalName>demo</finalName> </build>

注意:在打包之前需要先确定项目的java环境是jdk而非jre
点击项目右键Build Path


打包命令clean package
右键项目--run as --maven build--golas输入 clean package


把jar包放在其中一个盘里(例如我在E盘的test文件夹中)

cmd运行jar包
java -jar jar包名(demo.jar)
Ctrl+c 关闭命令

cmd修改端口号 :java -jar demo.jar --server.port=4399

二. SpringBoot配置文件
1、Spring Boot框架遵循约定大于配置。
2、SpringBoot配置文件
配置文件的两种文件格式:1、application.properties 2、application.yaml
如果两个在同一级目录,默认读取application.properties
在SpringBoot中默认的主配置文件名
默认配置文件放在resources中
下面是第一种文件格式:application.properties


这样就新建成功了



下面是第二种文件格式application.yaml
YAML Ain’t Markup Language,YAML 是一种简洁的非标记语言。YAML 以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。
YAML 有以下基本规则:
大小写敏感
使用缩进表示层级关系
一定要有层次结构


配置文件的路径及优先级
配置文件在项目中有四个可以放的地址
1、根目录下(二当家)
2、项目根目录中config下(大当家)
3、项目的resources目录下(四当家)
4、项目的resources中的config目录下(三当家)
在四个配置文件存储位置,读取会有优先级是2>1>4>3
结构如下:

下面来测试一下
首先根目录下

然后项目根目录中config下

其次项目的resources目录下

最后项目的resources中的config目录下

测试结果:还是先执行根目录下的


如果报了这个错就说明端口号没占用了

三、 SpringBoot多环境配置
在项目的整个研发过程中,同一个项目会面临着不同的使用环境。使用环境不同,需要的配置信息也会不同。例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据库。如果在项目中只有 application.properties(application.yml)一个配置文件的话,该文件中的属性值会经常需要改动,就会使项目整体的体验变得非常差,而且出错率也极高。这时候,我们可以用 profile 在不同的环境下配置不同的配置文件。这样一来,在 SpringBoot 项目中就出现了多环境的配置文件。
根据不同的环境定义不同的配置环境--对应配置文件
SpringBoot环境配置公式:application-{profile} .properties
{profile} :dev或者test或者prod 也可以自定义
开发环境(模式) dev application-dev . properties
测试环境(模式) test application-test. Properties
生产环境(模式) prod application-prod. Properties
使用spring.profiles.active=dev(环境) 切换环境
下面如何创建:
src/main/resources右键新建一个file
结构如下:


spring.profiles.active=(环境)dev #dev就是配置文件名中间的名称


四、自定义属性
SpringBoot 可以在配置文件中修改默认约定的属性值,还可以添加一些自己需要的属性,也就是可以自定义一些属性。这些自定义的属性可以使用@Value 注解将属性值注入到 beans 中,或使用@ConfigurationProperties注解将属性值绑定到结构化的 beans 中 。
自定义的属性可以放到 application.properties(或 application.yml)全局配置文件中,也可以在自定义的其他配置文件中定义
下面自定义一个一个学生信息 使用的也是propertis和yanl文件使用propertis
右键--new file --stu.properties --右键编码格式

如何读取自定义属性值到实体类
两种方式:
使用@Value注解将属性值单独注入指定到beans中 单个
使用@ConfigurationProperties注解将属性值绑定到特定结构化的beans中 批量
第一种 使用@Value注解将属性值单独注入指定到beans中
新建一个class类



1、要注入自定义属性先@Component
@Component :将实体类交给Spring进行管理 进行bean化,才能进行注入自定义属性值
2、绑定自定义配置文件 指定配置文件的地址
3、使用@value("${属性名|键}") ${属性名|键}--spel表达式


使用@ConfigurationProperties注解将属性值绑定到特定结构化的beans中
1、导入依赖



@ConfigurationProperties和@Value优缺点
1) 可以从配置文件中批量注入属性;
2) 支持获取复杂的数据类型;
3) 对属性名匹配的要求较低,比如 user-name,user_name,userName,USER_NAME 都可以取值;
@Value 注解的优缺点正好相反,它只能一个个配置注入值;不支持数组、集合等复杂的数据类型;不支持数据校验;对属性名匹配有严格的要求。最大的特点是支持 SpEL 表达式,使其拥有更丰富的功能。
