SpringBoot入门
SpringBoot简介
Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。同时它集成了大量常用的第三方库配置(例如 Redis、MongoDB、Jpa、RabbitMQ、Quartz 等等),Spring Boot 应用中这些第三方库几乎可以零配置的开箱即用。
Spring Boot的主要优点:
- 为所有Spring开发者更快的入门
- 开箱即用,提供各种默认配置来简化项目配置
- 内嵌式容器简化Web项目
- 没有冗余代码生成和XML配置的要求
Hello SpringBoot!
创建SpringBoot项目
- 方式一:官网创建
- Spring Initializr:https://start.spring.io/
- 方式二:IDEA集成Spring Initializr创建
项目结构分析
1、程序的主启动类
2、一个 application.properties 配置文件
3、一个 测试类
4、一个 pom.xml
<!-- pom.xml分析 -->
<!-- 父依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<!-- web场景启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- springboot单元测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 打包插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
编写Controller
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "Hello SpringBoot!";
}
}
启动项目
- 运行SpringBoot主启动类,浏览器访问http://localhost:8080
打包项目
- 点击maven的package即可将项目打成jar包
- 打包时会运行所有的测试用例,若要跳过测试,需要以下配置
<!--
在工作中,很多情况下我们打包是不想执行测试用例的
可能是测试用例不完事,或是测试用例会影响数据库数据
跳过测试用例执
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!--跳过项目运行测试用例-->
<skipTests>true</skipTests>
</configuration>
</plugin>
彩蛋:banner
- 如果想更改SpringBoot启动时显示的图案,即banner,只需在项目的resources目录下创建一个banner.txt即可
- 图案可以到以下这个网站生成:https://www.bootschool.net/ascii
Yaml语法学习
SpringBoot配置文件
SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的
- application.properties
- 语法结构 : key=value
- application.yml
- 语法结构: key:空格 value
**配置文件的作用 😗*修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好
了
yaml概述
YAML是 “YAML Ain’t a Markup Language” (YAML不是一种标记语言)的递归缩写。 在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言) 这种语言以数据做为中心,而不是以标记语言为重点! 以前的配置文件,大多数都是使用xml来配置;比如一个简单的端口配置,我们来对比下yaml和xml 传统xml配置:
传统xml配置
<server>
<port>8081</port>
</server>
yaml配置
server:
port: 8081
yaml基础语法
说明:语法要求严格!
1、空格不能省略
2、以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。
3、属性和值的大小写都是十分敏感的。
双引号与单引号的区别:
-
“ ” 双引号,不会转义字符串里面的特殊字符 , 特殊字符会作为本身想表示的意思;
- 比如 : name: “zhang \n san” 输出 : zhang 换行 san
-
’ ’ 单引号,会转义特殊字符 , 特殊字符最终会变成和普通字符一样输出
- 比如 : name: “zhang \n san” 输出 : zhang \n san
JSR303校验
Springboot中可以用==@validated==来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。我们这里来写个注解让我们的name只能支持Email格式;
@Component //注册bean @ConfigurationProperties(prefix = "person") @Validated //数据校验
public class Person {
@Email(message="邮箱格式错误") //name必须是邮箱格式
private String name;
}
运行结果 : default message [不是一个合法的电子邮件地址];
使用数据校验,可以保证数据的正确性; 下面列出一些常见的使用
@NotNull(message="名字不能为空")
private String userName;
@Max(value=120,message="年龄最大不能查过120")
private int age;
@Email(message="邮箱格式错误")
private String email;
空检查
@Null 验证对象是否为null
@NotNull 验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空 格.
@NotEmpty 检查约束元素是否为NULL或者是EMPTY.
Booelan检查
@AssertTrue 验证 Boolean 对象是否为 true
@AssertFalse 验证 Boolean 对象是否为 false
长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Length(min=, max=) string is between min and max included.
日期检查
@Past
@Future
@Pattern
验证 Date 和 Calendar 对象是否在当前时间之前 验证 Date 和 Calendar 对象是否在当前时间之后 验证 String 对象是否符合正则表达式的规则
多环境切换
profile是Spring对不同何静提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境。
我们在主配置文件编写的时候,文件名可以是application-{profile}.properties/yaml,用来指定多个环境版本。
但是Springboot并不会直接启动这些配置文件,默认使用application.properties主配置文件
#比如在配置文件中指定使用dev环境
#我们启动SpringBoot,就可以看到已经切换到dev下的配置了
spring.profiles.active=dev
配置文件加载位置
SpringBoot启动会扫描以下位置的application.properties或者application.yaml文件作为SpringBoot的默认配置文件
优先级1:项目路径下的config文件夹配置文件
优先级2:项目路径下配置文件
优先级3:资源路径下的config文件夹配置文件
优先级4:资源路径下配置文件
优先级由高到低,高优先级的配置会覆盖低优先级的配置
SpringBoot会从这四个位置全部加载配置文件,互补配置