目录
[1.什么是Spring Boot?为什么要学习Spring Boot?](#1.什么是Spring Boot?为什么要学习Spring Boot?)
[2.Spring Boot优点](#2.Spring Boot优点)
[3.创建Spring Boot项目](#3.创建Spring Boot项目)
[3.2Spring Boot创建](#3.2Spring Boot创建)
[4.Spring Boot中的配置文件](#4.Spring Boot中的配置文件)
[4.1Spring Boot配置文件的作用](#4.1Spring Boot配置文件的作用)
[4.3 properties VS yml](#4.3 properties VS yml)
[5.Spring Boot日志文件](#5.Spring Boot日志文件)
[4.3 日志持久化](#4.3 日志持久化)
前言:
在上一小节的JavaEE的进阶知识中小编主要是与大家分享了什么是IoC容器,以及依赖注入的五大注解和Bean的使用。那么接下来这一小节中小编将与大家分享一下有关于Spring Boot项目的创建以及使用。
1.什么是Spring Boot?为什么要学习Spring Boot?
Spring 的诞生就是为了简化Java程序的开发,而Spring Boot的诞生是为了简化Spring程序的开发。Spring Boot翻译一下就是Spring手脚架的意思,在盖房子的时候就会使用手脚架来提高盖房子的效率。而Spring Boot就是Spring框架的手脚架,他就是为了快速开发Spring框架诞生的。
2.Spring Boot优点
- 起步依赖(创建的时候可以方便的添加依赖)。
- 内置Tomcat容器。无须配置Tomcat等Web容器,直接运行和部署程序。
- 快速部署,使用jar包加上简单的命令直接运行。
- 抛弃XML的配置方式,使用注解和配置的方式进行开发。
- 支持更多的监控的指标,可以更好的了解项目的运行情况。
3.创建Spring Boot项目
3.1准备工作
在idea中安装插件:
3.2Spring Boot创建
3.2.1通过idea的方式创建
①选择Spring Boot的工程项目进行创建。
②选择下面的选项,点击next。③选择要添加的插件。
④确定存放路径,点击完成进行创建。
⑤创建好之后删除一些无用的目录。
⑥在pom.xml中删除以下后缀内容,并点击侧边的maven进行刷新。
⑦点击主启动类进行启动项目,验证项目创建是否正确。
Spring Boot目录工程详解:
快速添加依赖的方法:
①安装插件。
②右键点击Generator,点击Edit Starters,然后寻找你想要的插件。
③点击maven的刷新按钮,进行刷新。
配置文件中的配置类型分类:
- 系统配置项 ex:server.port,它是给系统(框架)使用的。
- 用户自定义配置ex:myimage.path开发者自己使用。
idea热部署(写完代码不用手动重新启动,新代码可以自动生效)
①添加springboot-dev-tool框架。
②在idea设置中开启项目的自动编译。
3.2.2通过网页创建
我们也可以通过Spring的网页版来创建一个我们想要的项目。网址☞https://start.spring.io/
4.Spring Boot中的配置文件
4.1Spring Boot配置文件的作用
整个项目中所有的数据都是在配置文件中配置的,比如:
- 数据的连接信息(包含用户名和密码的设置)。
- 项目的启动端口。
- 第三方系统的调用密钥等信息。
- 用于发现和定位问题的普通日志和异常日志等。
想象一下如果没有配置信息,那么Spring Boot项目就不能连接和操作数据库,甚至是不能保存可以用于排查问题的关键日志,所以配置文件的作用是非常重要的。
4.2配置文件的格式
Spring Boot配置文件主要分为以下两种格式:
- .properties
- .yml
具体的写法请看下面。
properies配置文件:
他是最早期的配置文件格式,也是创建Spring Boot项目默认的配置文件。
properies配置文件的优缺点:
- 优点:配置文件结构清晰:key=value->适合初学者。
- 缺点:写法比较臃肿。
在yml中的MySQL的配置:
yml优点:
- yml是一个可读性高,写法简单,易于理解,它的语法和JSON语言类似。
- yml支持更多的数据类型。
- yml支持更多的编程语言,它不止是Java中可以使用也可以在其他语言中使用。
注意:在书写的时候中间需要有一个空格!!!
特殊说明:
- 理论上properties可以和yml一起存在于一个项目当中,当properties和yml一起存一个项目中时,如果配置文件出现了同样的配置,比如properties和yml中都配置了"server.port",那么这个时候会以properties中的配置为主,也就是.properties配置文件的优先级最高,但加载完.properties文件之后,也会加载.yml文件的配置信息。
- 虽然理论上来讲.properties可以和.yml文件共存,但实际上的业务当中,我们通常会采取一种同一的配置文件格式,这样可以更好的维护(降低故障率)。
4.3 properties VS yml
- properties是以key=value 的形式配置的键值类型的配置文件,而yml使用的是类似JSON格式的树形配置方式进行配置的,yml层级之间使用换行缩进的方式配置,key和value之间使用**":"**英文冒号加空格的方式设置,并且空格不可以省略。
- properties为早期并默认的配置文件格式,但其配置存在一定的冗余数据,使用yml可以很好的解决数据冗余的问题。
- yml通用性更好,支持跟多语言,如Java、Go、Python等,如果是云服务器开发,可以使用一份配置文件作为Java和Go的共同配置文件。
- yml支持更多的数据类型。
5.Spring Boot日志文件
5.1日志的作用
日志是程序的重要组成部分,想象一下,如果程序报错了,不让你打开控制台看日志,那么你能找到报错的信息吗?答案当然是否定的。因此日志对于我们来说最重要的用途就是排除和定位问题。
除了发现和定位问题之外,我们还可以通过日志实现以下功能:
- 记录用户登录日志,方便分析用户是正常登录还是恶意破解用户。
- 记录系统的操作日志,方便数据恢复和定位操作人。
- 记录程序的执行时间,方便为以后优化程序提供数据支持。
5.2日志的用法
Spring Boot项目在启动的时候默认就有日志的输出,如下所示:
以上内容就是Spring Boot输出的控制台日志信息。
Spring Boot默认打印日志格式说明:
通过上述日志信息我们能发现以下三个问题:
- Spring Boot内置了日志框架。
- 默认情况下输出的日志并非是开发者定义和打印的,那么开发者又该怎么打印呢?
- 日志默认是打印在控制台上的,而控制台的日志不是不能被保存的,那么怎么把日志永久的保存下来呢?
下面我们来带着问题一起探讨一下吧!
5.3自定义日志
开发者自定义打印日志的实现步骤:
- 通过日志工程得到日志对象。
- 通过日志对象提供的打印方法实现打印。
①得到日志对象。
②使用日志对象提供API打印日志。
代码展示:
java
package com.example.demo.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class LogController {
//1.得到日志对象
private static Logger log = LoggerFactory.getLogger(LogController.class);
//2.使用日志对象提供的API打印日志
@RequestMapping("/log")
public void log() {
String msg = "我是Spring Boot的日志";
log.trace("trace ---> " + msg);
log.debug("debug ---> " + msg);
log.info("info ---> " + msg);
log.warn("warn ---> " + msg);
log.error("error ---> " + msg);
}
}
4.日志级别
4.1日志级别的作用
- 日志级别可以帮助你筛选出重要的信息,比如设置日志级别为error,那么就可以只看程序的报错日志了,对于普通的调试日志和业务就可以忽略了,从而节省开发者信息筛选的时间。
- 日志级别可以控制不同环境下,一个程序是否需要打印日志,如开发环境我们需要很详细的信息,而生产环境为了保证性能和安全性就会输入尽量少的日志,而通过日志的级别就可以实现此需求。
4.2日志级别的分类与使用
日志的级别分为:
- **trace:**微量,少许的意思,级别最低。
- **debug:**需要调试时候的关键信息打印。
- **info:**普通的打印信息(默认日志级别)。
- **warn:**警告,不影响使用,但需要注意的问题;
- **error:**错误信息,级别较高的错误日志信息;
- **fatal:**致命的,因为代码异常导致程序退出执行的事件。
日志的级别顺序:
越往上接收到的消息就越少,如设置了warn就只能收到warn、error、fatal级别的日志。
那么为什么Spring Boot可以打印日志,并设置日志级别?因为在Spring Boot中内置了两个日志框架:SLF4J+LogBack。
给某个文件夹单独设置日志级别:
4.3 日志持久化
日志持久化就是将日志保存到磁盘中,以上我们输出的日志都是在控制台上的,然而在生产环境上咱们需要将日志保存下来,以便出现问题之后追溯问题,把日志保存下来的过程就叫做持久化。
想要将日志进行持久化,只需要在配置文件中指定日志的存储目录或者是指定日志保存文件之后Spring Boot就会将控制台的日志写到相应的目录或文件下。
①设置日志保存路径。
②设置日志保存文件名。
4.4更加简单的日志输出--lombok
每次都使用LoggerFactory.getLogger(xxx.class)都很繁琐,而且每一个类我们都需要添加一次,所以这里我们使用Lombok来更加简单的输出。
①添加lombok框架支持。
②使用@slf4j注解输出日志。
Lombok的实现原理:
Lombok在编译时期(.java --> .class) 代码的时候将Lombok的注解,转换成对应的代码。
结束语:
好了这节小编就给大分享到这里啦,希望这节对大家有关于Spring Boot的基础知识的了解有一定帮助,想要学习的同学记得关注小编和小编一起学习吧!如果文章中有任何错误也欢迎各位大佬及时为小编指点迷津(在此小编先谢过各位大佬啦!)