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

news2024/11/21 8:57:02

目录

前言:

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.coloradmin.cn/o/1057717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树莓集团涉足直播产业园区运营,成都直播产业园区再添黑马

树莓集团涉足成都直播产业园运营领域,这一消息引起了业界的广泛关注。在这个无限可能的直播领域中,树莓集团将与上市公司德商产投紧密合作,立志为成都直播行业的发展注入新的活力。成都天府蜂巢直播产业园推行着一系列创新的政策措施&#xf…

算法通过村第十一关-位运算|黄金笔记|位运算压缩

文章目录 前言用4kb内存寻找重复元素总结 前言 提示:如果谁对你说了地狱般的话,就代表了他的心在地狱。你不需要相信那样的话,就算对方是你的父母也一样。 --高延秀《远看是蔚蓝的春天》 位运算有个很重要的作用就是能用比较小的空间存储比较…

Tensorflow、Pytorch和Ray(张量,计算图)

1.深度学习框架(Tensorflow、Pytorch) 1.1由来 可以追溯到2016年,当年最著名的事件是alphago战胜人类围棋巅峰柯洁,在那之后,学界普遍认为人工智能已经可以在一些领域超过人类,未来也必将可以在更多领域超过…

网盘搜索引擎:点亮知识星空,畅享数字宝藏!

大家好!作为一名资深的网络产品运营人员,我今天要向大家介绍一款让你受益匪浅的神奇工具——网盘搜索引擎!它可以帮助你免费搜索查询各种云盘共享资源,包括影视作品、纪录片、小说、动漫等等。现在,我们急需网络流量&a…

手边酒店V2独立版小程序 1.0.21 免授权+小程序前端安装教程

手边酒店小程序独立版酒店宾馆订房系统支持创建多个小程序,让每一个客户单独管理属于自己的小程序。系统无需授权,小程序端用户授权也是采用最新接口。 缺点不开源不影响使用,播播资源安装测试下来未发现或出现BUG情况,用户授权接…

深度学习 图像分割 PSPNet 论文复现(训练 测试 可视化)

Table of Contents 一、PSPNet 介绍1、原理阐述2、论文解释3、网络模型 二、部署实现1、PASCAL VOC 20122、模型训练3、度量指标4、结果分析5、图像测试 一、PSPNet 介绍 PSPNet(Pyramid Scene Parsing Network)来自于CVPR2017的一篇文章,中文翻译为金字塔场景解析…

Redis主从复制、哨兵、cluster集群

目录 Redis 主从复制 主从复制的作用 主从复制流程 搭建Redis 主从复制 实验环境 所有主机安装redis 修改 Redis 配置文件(Master节点操作) 修改 Redis 配置文件(Slave节点操作) 验证主从效果 Redis 哨兵模式 哨兵模式的…

【DRAM存储器十】SDRAM介绍-刷新

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考资料:《镁光SDRAM数据手册》、《PC SDRAM specification》 从前面的…

2023年中国医疗传感器行业现状分析:市场国有化率低[图]

传感器是对物理刺激(如热、光、声、压力、磁或特定的运动)作出反应并传送产生的脉冲(如用于测量或操作控制)的装置。传感器一般由敏感元件、转换元件和转换电路组成。 医疗传感器分类 资料来源:共研产业咨询&#xff…

基于SSM的奶茶店管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

世界前沿技术发展报告2023《世界航天技术发展报告》(二)卫星技术

(二)卫星技术 1.概述2. 通信卫星2.1 美国太空发展局推进“国防太空体系架构”,持续部署“传输层”卫星2.2 美国军方在近地轨道成功演示验证星间激光通信2.3 DARPA启动“天基自适应通信节点”项目,为增强太空通信在轨互操作能力提供…

AVL树的实现及原理

目录 AVL树的由来 AVL的实现原理 左单旋 右单旋 先左后右 先右后左 总结 AVL树的由来 查找,无论在什么情况下都与我们息息相关。在我们学习数组阶段学习到了线性查找,可是它的效率很低下,又演变出来了二分查找,它的效率非常…

MySQL进阶_2.索引的设计原则

文章目录 第一章、索引简介1.1 索引定义1.2 使用索引的目的1.3 B树结构 第二章 常见索引概念2.1 聚簇索引2.2 二级索引(辅助索引、非聚簇索引)2.3 比较2.4 联合索引2.5 总结2.6 索引的代价 第三章 索引的分类和创建3.1 索引分类3.2 创建和删除索引 第四章…

集群-Nacos-2.2.3、Nginx-1.24.0集群配置

Nacos集群 高可用 Nginx 集群Nacos 集群(至少三个实例)高可用数据库集群(取代 Nacos 内嵌数据库) Nacos 集群搭建 集群使用版本: Nginx 1.24.0 Nacos 2.2.3 服务器IP服务器版本Nginx18.18.18.40CentOS-7.9MySQL18.18.…

2024免费的硬盘数据恢复软件有哪些?

在当今信息化的社会,数据成为了人们日常工作和生活的重要组成部分。不幸的是,数据丢失的问题也越来越普遍。硬盘数据恢复软件因此而产生,为那些不幸丢失数据的人们提供了救赎。在本文中,我们将介绍十大硬盘数据恢复软件。 一、Rec…

Mind Map:大语言模型中的知识图谱提示激发思维图10.1+10.2

知识图谱提示激发思维图 摘要介绍相关工作方法第一步:证据图挖掘第二步:证据图聚合第三步:LLM Mind Map推理 实验实验设置医学问答长对话问题使用KG的部分知识生成深入分析 总结 摘要 LLM通常在吸收新知识的能力、generation of hallucinati…

【STM32基础 CubeMX】ADC的基础使用

文章目录 前言一、ADC是什么二、使用CubeMX配置ADC三、代码分析3.1 cubemx生成代码分析3.2 ADC HAL库函数HAL_ADC_Start_IT开启adc中断函数获取ADC值 四、示例代码:获取光敏电阻的值总结 前言 在嵌入式系统开发中,STM32系列微控制器是广泛应用的一种硬件…

如何查看postgresql中的数据库大小?

你可以使用以下命令来查看PostgreSQL数据库的大小: SELECT pg_database.datname as "database_name", pg_size_pretty(pg_database_size(pg_database.datname)) AS size_in_mb FROM pg_database ORDER by size_in_mb DESC;这将返回一个表格&#xff0…

Mysql以key-val存储、正常存储的区别

场景 你作为一个服务端工程师,假设产品要求设计这么一个页面,页面上包含很多模块,每个模块都可以单独进行变更,有些模块是富文本。 实现方式有很多,我们来聊比较常用的两种,看看mysql的表如何设计。 第一…

【算法训练-贪心算法 一】买卖股票的最佳时机II

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【贪心算法】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…