Spring Boot的创建和使用(JavaEE进阶系列2)

目录

前言:

1.什么是Spring Boot?为什么要学习Spring Boot?

2.Spring Boot优点

3.创建Spring Boot项目

3.1准备工作

3.2Spring Boot创建

3.2.1通过idea的方式创建

3.2.2通过网页创建

4.Spring Boot中的配置文件

4.1Spring Boot配置文件的作用

4.2配置文件的格式

4.3 properties VS yml

5.Spring Boot日志文件

5.1日志的作用

5.2日志的用法

5.3自定义日志

4.日志级别

4.1日志级别的作用

4.2日志级别的分类与使用

4.3 日志持久化

4.4更加简单的日志输出--lombok

结束语:


前言:

在上一小节的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自定义日志

开发者自定义打印日志的实现步骤:

  1. 通过日志工程得到日志对象。
  2. 通过日志对象提供的打印方法实现打印。

①得到日志对象。

②使用日志对象提供API打印日志。

代码展示:

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的基础知识的了解有一定帮助,想要学习的同学记得关注小编和小编一起学习吧!如果文章中有任何错误也欢迎各位大佬及时为小编指点迷津(在此小编先谢过各位大佬啦!)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/148130.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openGauss学习笔记-89 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用查询原生编译

文章目录 openGauss学习笔记-89 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用查询原生编译89.1 查询编译:PREPARE语句89.2 运行命令89.3 轻量执行支持的查询89.4 轻量执行不支持的查询89.5 JIT存储过程89.6 MOT JIT诊断89.6.1 mot_jit_detai…

51单片机可调幅度频率波形信号发生器( proteus仿真+程序+原理图+报告+讲解视频)

51单片机可调幅度频率信号发生器( proteus仿真程序原理图报告讲解视频) 讲解视频1.主要功能:2.仿真3. 程序代码4. 原理图4. 设计报告5. 设计资料内容清单&&下载链接***[资料下载链接](https://docs.qq.com/doc/DS1daV1BKRXZMeE9u)*** 51单片机可…

NPDP产品经理知识(产品创新流程)

1.复习组合管理: 组合管理的目标 ===> 价值最大化,项目平衡,战略一致,管道平衡(资源需求和供给),盈利充分 (实现财务目标) 产品创新流程就是管理风险的过程。 模糊前端: 产品创新章程:PIC 包含 =====> 背景,聚焦舞台,目标和目的,特别准则,可持续性 新产…

将3D MAX设计模型导入NX1988

将3D MAX设计模型导入NX1988 概述导入流程导出喜欢的模型对模型进行修改模型贴图 概述 一般家装设计都不会用NX之类的产品设计软件,也没有通用的文件格式可以互相转换,本文的目的是将从网上下载的一些设计较好的3D MAX模型导入到NX软件中借用&#xff0…

如何在Qt6中引入Network模块

2023年10月1日,周日凌晨 2023年10月2日,周一下午 第一次更新 目录 如果用的是CMakeQt Console ApplicationQt Widgets Application如果用的是qmake 如果用的是CMake find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget…

【k8s】集群搭建篇

文章目录 搭建kubernetes集群kubeadm初始化操作安装软件(master、所有node节点)Kubernetes Master初始化Kubernetes Node加入集群部署 CNI 网络插件测试 kubernetes 集群停止服务并删除原来的配置 二进制搭建(单master集群)初始化操作部署etcd集群安装Docker部署master节点解压…

【C++】基础入门

万字复习C基础入门语法&#xff0c;适合学过C的朋友用来复习查阅&#xff0c;可能不太适合0基础的朋友。 一.c初识 (1) 第一个c程序 最简单的格式&#xff1a; // 导入头文件 #include<iostream> // 简化对命名空间std下函数和对象的使用 using namespace std; // …

Day-05 CentOS7.5 安装docker

参考 &#xff1a; Install Docker Engine on CentOS | Docker DocsLearn how to install Docker Engine on CentOS. These instructions cover the different installation methods, how to uninstall, and next steps.https://docs.docker.com/engine/install/centos/ Doc…

C++算法 —— 动态规划(9)完全背包问题

文章目录 1、动规思路简介2、完全背包【模板】3、零钱兑换4、零钱兑换Ⅱ5、完全平方数 背包问题需要读者先明白动态规划是什么&#xff0c;理解动规的思路&#xff0c;并不能给刚接触动规的人学习。所以最好是看了之前的动规博客&#xff0c;以及01背包博客&#xff0c;才能看完…

项目测试练习

项目背景项目功能测试计划Bug总结升级自动化测试正常登录流程 项目背景 1&#xff1a;博客之站系统是采用前后端分离的方式来实现&#xff1b;使用MySQL、Redis数据库储存相关数据&#xff1b;同时部署到云服务器上。 2&#xff1a;包含注册页、登录页、博客列表页、个人列表页…

前端Vue框架系列—— 学习笔记总结Day01

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

双重差分模型(DID)论文写作指南与操作手册

手册链接&#xff1a;双重差分模型&#xff08;DID&#xff09;论文写作指南与操作手册https://www.cctalk.com/m/group/90983583?xh_fshareuid60953990 简介&#xff1a; 当前&#xff0c;对于准应届生们来说&#xff0c;毕设季叠加就业季&#xff0c;写作时间显得十分宝贵…

Django基础讲解-路由控制器和视图(Django-02)

一 路由控制器 参考链接&#xff1a; Django源码阅读&#xff1a;路由&#xff08;二&#xff09; - 知乎 Route路由, 是一种映射关系&#xff01;路由是把客户端请求的 url路径与视图进行绑定 映射的一种关系。 这个/timer通过路由控制器最终匹配到myapp.views中的视图函数 …

监狱劳动工具管理系统|智工具DW-S308的功能

监狱劳动工具管理系统(智工具DW-S308)是依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对工具进行统一管理、分析的信息化、智能化、规范化的系统。 目前监狱的劳动工具管理很多还停留在固定工位&#xff0c;人盯人、人管人等落后的管理模式&#xff…

代码随想录 Day10 栈与队列 LeetCode T239 滑动窗口的最大值 T347 前K个高频元素

简要介绍一下单调队列和优先级队列的不同 元素顺序的处理&#xff1a;单调队列中&#xff0c;元素的顺序是单调的&#xff0c;也就是说&#xff0c;队列中的元素按照特定的单调性&#xff08;递增或递减&#xff09;排列。这种特性使得单调队列在处理一些问题时非常高效&#…

postgresql-聚合函数增强功能

postgresql-聚合函数增强功能 按季度统计入职员工 按季度统计入职员工 select -- extract截取&#xff0c;按季度进行统计入职员工总数 extract(year from hire_date), count(*) filter(where extract(quarter from hire_date) 1) "第一季度", count(*) filter(wh…

Meta分析如何下笔?掌握这些干货就够了

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;最早出现于“循证医学”&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面。…

【网络】网络扫盲篇 ——用简单语言和图解带你入门网络

网络的一些名词和基础知识讲解 前言正式开始一些基础知识发展背景运营商和生产商 协议协议的分层TCP/IP五层(或四层)模型&#xff08;可以不看&#xff0c;对新手来说太痛苦了&#xff0c;我这里只是为了让屏幕前的你过一遍就好&#xff0c;里面很多概念新手是不太懂的&#xf…

Nginx在CentOS上的安装部署、RabbitMQ在CentOS上安装部署

目录 1. Nginx在CentOS上的安装部署 1.1 Nginx简介 1.2 Nginx安装 1.2.1 安装yum依赖程序 1.2.2 手动添加&#xff0c;nginx的yum仓库 1.2.3 通过yum安装最新稳定版的nginx 1.2.4 启动 1.2.5 配置防火墙放行 1.2.6 启动后浏览器输入Linux服务器的IP地址或主机…

JavaSE入门--初始Java

文章目录 Java语言概述认识Java的main函数main函数示例运行Java程序认识注释认识标识符认识关键字 前言&#xff1a; 我从今天开始步入Java的学习&#xff0c;希望自己的博客可以带动小白学习&#xff0c;也能获得大佬的指点&#xff0c;日后能互相学习进步&#xff0c;都能如尝…