目录
一、SpringBoot简介
二、创建SpringBoot(通过Idea脚手架搭建项目)
三、properties配置文件
properties 配置文件说明
①. properties 基本语法
②. 读取配置⽂件
③. properties 缺点
2. yml 配置⽂件说明
①. yml 基本语法
②. yml 使用进阶
四、日志框架
在程序中得到日志对象
使用日志对象打印日志
日志级别
日志持久化
一、SpringBoot简介
在开始了解Spring Boot之前,需要先了解Spring,因为Spring Boot的诞生是和Spring息息相关的,Spring Boot是Spring发展到一定程度的产物,但是Spring Boot并不是spring的替代品,Spring Boot是为了让程序员根号的使用Spring而产生的。Spring Boot称之为搭建程序的脚手架,最主要的作用就是帮助我们快速搭建庞大的spring项目,进而减少一些xml的配置,做到开箱即用的效果。
Spring Boot的优势
-
快速集成框架,Spring Boot提供了添加启动依赖功能,用于快速使项目集成各种框架。
-
内置tomcat容器,无需配置web容器,直接运行和部署程序。
-
快速部署项目,无需外部容器,打成jar包,快速启动运行项目。
-
不需要繁琐的xml配置,使用注解和配置的方式快速开发。
二、创建SpringBoot(通过Idea脚手架搭建项目)
现在我们来说一下,如何在Idea上直接搭建SpringBoot项目:
1. 在左侧列表选择Spring Initializer,代表这是一个Spring Boot项目
2. 项目来源地址,因为spring是国外的服务器,所以我们通常使用阿里云的网站来搭建会快一点。
3. 点击设置,更改URL为:https://start.aliyun.com/
然后输入我们的项目名称Name,还有一个Java版本,打包类型,然后点击Next
1. 选择Spring Boot项目,由于这是国内镜像,阿里云的版本一般比官网低一点
2. 同样,我们在搜索框里搜索我们需要添加的依赖,比如说这里添加一个web依赖。然后直接点击Finish
点击Finish之后会直接打开我们刚刚创建的项目,可以看到这里还加了一个demo给我们,
OK,我们直接运行,出现下面页面也是代表我们构建运行项目成功。
热部署:
根据上面的步骤,我们已经完成了 Spring Boot项目的创建和运行,但是有一个问题就是,每次修改代码后都需要重新启动代码才会生效,可以配置热部署来解决这个问题。
热部署的配置如下:
这样修改对于我们修改web资源,可以立即生效,对于修改java代码,部分生效
三、properties配置文件
配置文件作用:
整改项目中所有重要的数据都在配置文件中配置的,比如:
-
数据库的连接信息(包含用户名和密码的设置)
-
项目的启动端口
-
第三方系统的调用密钥信息等
-
用发现和定位问题的普通日志和异常日志等
配置文件的格式:
.properties
.yml
理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配置⽂件格式,这样可以更好的维护(降低故障率)。当 properties 和 yml ⼀起存在⼀个项⽬中时, .properties 配置⽂件的优先级最⾼,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。
properties 配置文件说明
properties 配置⽂件是最早期的配置⽂件格式,也是创建 Spring Boot 项⽬默认的配置⽂件。
①. properties 基本语法
properties 是以键值的形式配置的,key 和 value 之间是以 “=” 连接的。
# 配置项⽬端⼝号
server.port=8084
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dbname?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
②. 读取配置⽂件
使⽤ @Value 注解来实现。@Value 注解使⽤ “${}” 的格式读取。
@Component
public class ReadYml {
@Value("${server.port}")
private String port;
@PostConstruct
public void postConstruct() {
System.out.println("Read YML,port:" + port);
}
}
③. properties 缺点
properties 配置是以 key-value 的形式配置的,properties 配置⽂件中会有很多的冗余的信息。
2. yml 配置⽂件说明
yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔”。
yml 优点分析:
-
yml 是⼀个可读性⾼,写法简单、易于理解,它的语法和 JSON 语⾔类似。
-
yml ⽀持更多的数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使⽤空⽩符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
-
yml ⽀持更多的编程语⾔,它不⽌是 Java 中可以使⽤在 Golang、PHP、Python、Ruby、JavaScript、Perl 中。
①. yml 基本语法
yml 是树形结构的配置⽂件,它的基础语法是“key: value”,注意 key 和 value 之间使⽤英⽂冒汗加空格的⽅式组成的,其中的空格不可省略
spring:
datasource:
url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
username: root
password: root
②. yml 使用进阶
yml 配置不同数据类型及 null
# 字符串
value1: Hello
# 布尔值,true或false
value2: true
value3: false
# 整数
value4: 10
value: 0b1010_0111_0100_1010_1110 # ⼆进制
# 浮点数
value5: 3.14159
value6: 314159e-5 # 科学计数法
# Null,~代表null
value7: ~
对于基本数据类型直接 key: value 即可。
yml 读取配置的⽅式和 properties 相同,使⽤ @Value 注解即可
@Component
public class ReadYml {
@Value("${value1}")
private String hello;
@PostConstruct
public void postConstruct() {
System.out.println("Read YML,Hello:" + hello);
}
}
四、日志框架
日志的作用
日志是程序的重要组成部分,程序在生产环境中报错了,不让你打开控制台看日志,那么你应该怎么查看报错日志呢,因此日志框架对于我们程序员来说至关重要。
日志框架除了发现和定位问题之外,还可以通过日志实现如下功能;
-
记录用户的登录日志,方便分析用户是正常登录还是恶意破解的用户。
-
记录系统的操作日志,方便数据回复和定位操作人。
-
记录程序的执行时间,方便优化程序提供数据支持。
日志怎么用??
Spring Boot 项目在启动的时候默认就有日志输出,如下图所示
1.Spring Boot 内置了日志框架(不然也输出不了日志)。
2.默认情况下,输出的日志并非是开发者定义和打印的,那开发者怎么在程序中自定义打印日志呢?
3.日志默认是打印在控制台上的,而控制台的日志是不能被保存的,那么怎么把日志永久的保存下来呢?
在程序中得到日志对象
在程序中获取日志对象需要使用日志工厂 LoggerFactory,如下代码所示:
// 1.得到日志对象
private static Logger logger = LoggerFactory.getLogger(UserController.class);
注意:Logger 对象是属于 org.slf4j 包下的,不要导入错包。
因为 Spring Boot 中内置了日志框架 Slf4j,所以咱们可以直接在程序中调用 slf4j 来输出日志
使用日志对象打印日志
// 2.使用日志打印日志
logger.info("--------------要输出日志的内容----------------");
日志级别
日志的级别分为:
-
trace:微量,少许的意思,级别最低;
-
info:普通的打印信息;
-
debug:需要调试时候的关键信息打印;
-
warn:警告,不影响使用,但需要注意的问题;
-
error:错误信息,级别较高的错误日志信息;
-
fatal:致命的,因为代码异常导致程序退出执行的事件。
日志级别配置只需要在配置文件中设置“logging.level”配置项即可,如下所示:
longging:
level:
root: error
配置跟路径的日志级别。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
// 1.得到日志对象
private static Logger logger =
LoggerFactory.getLogger(UserController.class);
@Value("${server.port}")
private String port;
@Value("${spring.datasource.url}")
private String url;
@RequestMapping("/sayhi")
public String sayHi() {
// 2.使用日志打印日志
logger.trace("================= trace ===============");
logger.debug("================= debug ===============");
logger.info("================= info ===============");
logger.warn("================= warn ===============");
logger.error("================= error ===============");
return "Hi," + url;
}
}
默认日志输出级别 清除掉配置文件中的日志设置,观察控制台输入的日志级别。
得到以下结论,日志的输出级别,默认是 info。
日志持久化
以上的日志都是输出在控制台上的,然而在生产环境上咱们需要将日志保存下来,以便出现问题之后追溯问 题,把日志保存下来的过程就叫做持久化。想要将日志进行持久化,只需要在配置文件中指定日志的存储目录或者是指定日志保存文件名之后,Spring Boot 就会将控制台的日志写到相应的目录或文件下了。配置日志文件的保存路径:
logging:
file:
//设置日志文件的目录
path: D:\home\logs
//设置日志文件的文件名
name: D:\home\logs\spring-1024.log