目录
一.Spring Boot是什么
Spring 的诞生是为了简化java程序的开发,Spring Boot 的诞生是为了简化Spring程序开发的。
由于Spring要完成的业务越来越多,开发越来越大,越来越臃肿,为了解决臃肿和比较麻烦的配置才出现了Spring Boot 来进一步简化Spring程序开发。
SpringBoot 相当于Spring框架的脚手架,是为了快速开发Spring框架而诞生的。
二.Spring Boot的优点
- 快速集成框架:Spring Boot 提供了启动添加依赖的功能,用于秒级集成各种框架。
- 内置运行容器:无需配置Tomcat等Web容器,直接运行和部署程序。
- 快速部署项目:无需外部容器,即可启动并运行项目。
- 可以完全抛弃繁琐的XML,使用注解和配置的方式进行开发。
- 支持更多的监控指标,可以更好地了解项目的运行情况。
三.Spring Boot 项⽬创建
3.1使用idea创建
3.2通过Spring官方提供的Web地址进行创建: https://start.spring.io
注意:Spring Boot 约定大于配置
Spring Boot中有哪些约定呢?
- Maven的目录结构。默认有resources文件夹,存放资源配置文件。src-main-resources,src-main-java。默认的编译生成的类都在targe文件夹下面
- spring boot默认的配置文件必须是,也只能是application.命名的yml文件或者properties文件,且唯一
- application.yml中默认属性。数据库连接信息必须是以spring: datasource: 为前缀;多环境配置。该属性可以根据运行环境自动读取不同的配置文件;端口号、请求路径等
四.Spring Boot配置文件
4.1配置文件的两种格式
.properties
.yml
特殊说明
- 理论上讲 properties 可以和 yml ⼀起存在于⼀个项⽬当中,当 properties 和 yml ⼀起存在⼀个项 ⽬中时,如果配置⽂件中出现了同样的配置,⽐如 properties 和 yml 中都配置了“server.port”,那 么这个时候会以 properties 中的配置为主,也就是 .properties 配置⽂件的优先级最⾼,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。
- 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配 置⽂件格式,这样可以更好的维护(降低故障率)。这就好像连锁店的服饰⼀样,不管是⽼款的服 装还是新款的服装,⼀定要统⼀了才好看。
4.2配置文件的作用
- 为系统框架提供数据支持,整个项目中所需要的数据都在配置文件中配置,如:数据库的连接信息(包括用户名和密码)、项目的启动端口、第三方系统调用秘钥等信息、发现定位问题的普通日志和异常日志等。
- 为程序员自己使用。
4.3读取配置文件
如果在项⽬中,想要主动的读取配置⽂件中的内容,可以使⽤ @Value 注解来实现。
@Value 注解使⽤“${}”的格式读取,如下图所示:
五.yml配置文件使用
yml是YMAL缩写,全称是Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔”。
5.1 yml的优点
- 树形结构,可读性高,易于理解
- 可以简单表达数组、散列表、标量等数据形态
- 跨语种,不止是 Java 中可以使⽤ golang、python 都可以使⽤ yaml 作为配置⽂件。
5.2 yml基本用法
yml 是树形结构的配置⽂件,它的基础语法是“key: value”,注意 key 和 value 之间使⽤英⽂冒号加空格的⽅式组成的,其中的空格不可省略。
举例:使用yml连接数据库
spring:
datasource:
url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
username: root
password: root
5.3yml使用进阶
# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制
# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法
# Null,~代表null
null.value: ~
student:
id: 1
name: Java
age: 18
或者:
sudent: {id: 1,name: Java,age: 18}
这时不能用@Value来读取配置中的对象,此时要使用另一个注解@ConfigurationProperties来读取
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@ConfigurationProperties(prefix = "student")
@Component
public class StudentComponent {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "StudentComponent{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
5.4.properties VS yml 总结
- properties 是以 key=value 的形式配置的键值类型的配置⽂件,⽽ yml 使⽤的是类似 json 格式的 树形配置⽅式进⾏配置的,yml 层级之间使⽤换⾏缩进的⽅式配置,key 和 value 之间使⽤“: ”英⽂ 冒号加空格的⽅式设置,并且空格不可省略。
- properties 为早期并且默认的配置⽂件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的 解决数据冗余的问题。
- yml 通⽤性更好,⽀持更多语⾔,如 Java、Go、Python 等,如果是云服务器开发,可以使⽤⼀份 配置⽂件作为 Java 和 Go 的共同配置⽂件。
- yml 虽然可以和 properties 共存,但⼀个项⽬中建议使⽤统⼀的配置类型⽂件。
六.SpringBoot日志文件
6.1日志功能
- 快速定位和排查问题
- 记录用户的信息
- 记录操作信息,帮助恢复数据或定位责任人
- 记录程序的执行时间,方便后期的优化和分析
6.2自定义日志打印
SpringBoot内置了日志框架,默认情况下,输出的日志不是开发者定义和打印的,日志默认打印在控制台上,而控制台的日志是不能被保存的,所以开发者为以上功能自定义打印日志。
自定义打印日志实现步骤:
- 先在程序中获取到日志对象。
- 调用日志对象的打印方法,将日志打印出来。
@Controller
public class UserController {
// 1.获取日志对象
private static Logger logger = LoggerFactory.getLogger(UserController.class);
@RequestMapping("/hi")
@ResponseBody//说明返回给浏览器的是一个值而不是页面
public String sayHi(String name){
// 2.使用日志对象的日志打印方法来打印日志
logger.info("------------------执行了sayHi,得到参数name:"+name);
return "hi, " + name;
}
}
6.3日志级别
作用:筛选和过滤信息
- trace:微量,少许的意思,级别最低;
- info:普通的打印信息;
- debug:需要调试的时候打印的关键信息;
- warn:警告,不影响使用,但是需要注意的问题;
- error:错误信息,级别较高的错误日志信息。
- fatal:致命的,因为代码异常导致程序退出执行的事件。