【Spring Boot】

目录

🍪1 Spring Boot 的创建

🎂2 简单 Spring Boot 程序

🍰3 Spring Boot 配置文件

🍮3.1 properties 基本语法

🫖3.2 yml 配置文件说明

🍭3.2.1 yml 基本语法

🍩3.3 配置文件里的配置类型分类

🍝3.4 不同配置环境下的配置文件

🥣4 Spring Boot 打印日志

🥢4.1 默认打印的日志 

🍉4.2 自定义打印日志

🍈4.3 给某个文件夹单独设置日志级别

🥝4.4 日志持久化

🥥4.5 设置日志的时间打印格式

🍇5 lombok

🥤5.1 前置工作

🍴5.2 使用 lombok 更加简单地输出日志


Spring Boot 是 Spring 的脚手架,是专门为了快速开发 Spring 框架而诞生的。

1 Spring Boot 的创建

类要与启动类放在一起

2 简单 Spring Boot 程序

以前的 Spring 只是一个普通的 Java 项目,没有办法直接与浏览器进行互动,而如今可以使用 Spring Boot 来实现浏览器和用户的交互。

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@ResponseBody
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/sayhi")
    public String sayHi(){
        return "Hi, Spring Boot.";
    }
}

在网址输入:

http://localhost:8080/user/sayhi 

 需要注意的是,需要将该类和启动类放置到同级目录下。

 

Spring Boot 具备以下优点:

1. 快速集成框架,Spring Boot 在创建时就可以添加依赖

2. 内置运行容器,无需配置 Tomcat 等 Web 容器,可以直接运行和部署程序

3. 快速部署项目,无需外部容器即可启动并运行项目

4. 抛弃繁琐的 XML ,使用注解和配置的方式进行开发

Spring Boot 的设计思想是约定大于配置。类上标注着 @SpringBootApplication 就可以启动 Spring Boot 项目了。

 

3 Spring Boot 配置文件

Spring Boot 里有两种配置文件:

application.properties,是创建 Spring Boot 项目时默认的文件格式

application.yml,需要用户自己来创建,属于新版的配置文件

特殊说明:

1. 如果 properties 和 yml 一起存在于同一个项目中,如果两个配置文件出现了同样的配置,都配置了 server.port,properties 是 8081,而 yml 设置成 8089,那么会以 properties 中的配置为主,也就是说,properties 配置文件的优先级更高。

2. 理论上两种配置文件可以共存,但在实际工作中,还是会选择其中一种配置文件,为了以后更好地维护。

3.1 properties 基本语法

properties 以键值对的形式书写,key 和 value 之间以 “=”连接的。如:

# 配置项目端口号
server.port=8089

小技巧:配置文件中使用 # 来添加注释信息

 properties 会出现中文乱码问题,需要手动设置一下:

Settings 以及 New Projects Setup 中勾选如下:

 

这种语法格式也就意味着,properties 配置文件中会产生冗余的代码,比如:

# MySQL 配置项
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/myblog
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

同样的功能,换了 yml 配置文件会如何呢?且看下一小节内容。

3.2 yml 配置文件说明

yml 是 YAML 的缩写,全称为 Yet Another Markup Language,其中文就是 “另一种标记语言”。

yml 优点分析:

1. 可读性高,写法简单,语法与 JSON 语言类似

2. 支持更多的数据类型

3. 支持更多编程语言,Java、Golang、PHP、Python、Ruby、JavaScript、Perl 中

3.2.1 yml 基本语法

yml 是树形结构的配置文件,基础语法是 key: value,注意 key 和 value 之间使用英文冒号加空格的方式组成,其中的空格不可以省略。

# 使用 yml 连接数据库
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/myblog
    username: root
    password: 123456

3.3 配置文件里的配置类型分类

配置类型分类:

1. 系统配置项,给系统(框架)使用的,比如 server.port

2. 用户自定义配置,开发者自己使用,如 myImage.path

 那对于用户自定义配置,用户该如何读取呢?

在项目中想要读取配置文件中的内容,可以使用 @Value 注解来实现。

@Value 注解使用 "${}" 的格式来读取,见如下代码:

# 用户自定义配置项
myImage.path=d:\\image\\
package com.example.demo;


import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;

@RestController
public class TestController {
    @Value("${myImage.path}")
    private String myImage;

    @RequestMapping("/sayhi")
    public String sayHi(){
        System.out.println(LocalDateTime.now() + "日志"
        + "com.example.demo.TestController");
        return "你好,Spring Boot ->" + myImage;
    }
}

3.4 不同配置环境下的配置文件

# 指定配置文件的运行环境
spring.profiles.active=test

 

4 Spring Boot 打印日志

日志级别:

trace:日志级别最低

debug:调试日志级别

info:普通日志级别

warn:警告日志级别

error:错误日志级别

fatal:致命日志级别,只有系统在崩溃时才会输出的日志级别,级别最高

  

日志级别作用:过滤星系,将业务不需要的日志屏蔽掉

问题:Spring Boot 如何打印日志?

Spring Boot 内置了两个日志框架:SLF4J + LogBack

SLF4J 是让开发者使用和调用的框架,而 LogBack 是最底层实现日志相关操作的框架

4.1 默认打印的日志 

从左到右依次是:

日志发生的时间,日志级别,打印日志的线程 id,打印日志线程名称,日志打印的位置(包名+类名)以及日志内容

4.2 自定义打印日志

通过日志工程得到日志对象 -> 通过日志对象提供的打印方法来实现打印

package com.example.demo;

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);

    @RequestMapping("/log")
    public void log(){
        String msg = "今天周五,没有刮台风的一天";
        log.trace("trace -> " + msg);
        log.debug("debug -> " + msg);
        log.info("info -> " + msg);
        log.warn("warn -> " + msg);
        log.error("error -> " + msg);
    }
}

 

4.3 给某个文件夹单独设置日志级别

# 当前项目默认的日志级别
logging.level.root=info

# 给 Controller 这个文件夹单独设置日志级别
logging.level.com.example.demo.Controller=debug

4.4 日志持久化

Spring Boot 还支持将日志保存到磁盘中。

# 设置日志的保存路径
logging.file.path=C:\\image\\

# 设置日志的保存文件名
logging.file.name=C:\\image\\springboot.log

日志的添加方式不是覆盖,而是叠加。

4.5 设置日志的时间打印格式

# 设置日志时间的打印格式
logging.pattern.dateformat=yyyy-MM-dd HH:mm:ss

5 lombok

5.1 前置工作

安装一个 lombok 插件

在项目中添加 lombok 依赖 

之后便可以使用 lombok 来编写代码了。

5.2 使用 lombok 更加简单地输出日志

package com.example.demo;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class LogController2 {
    @RequestMapping("/log2")
    public void log2() {
        String msg = "今天周五,没有刮台风的一天";
        log.trace("trace -> " + msg);
        log.debug("debug -> " + msg);
        log.info("info -> " + msg);
        log.warn("warn -> " + msg);
        log.error("error -> " + msg);
    }
}
@SLF4J 
// 等同于以下代码 
private static Logger log = LoggerFactory.getLogger(LogController.class);

Lombok 实现的原理:在代码编译期(.java 文件)时,将 lombok 的注解转换成相应的代码,之后再编译成字节码文件(.class),再交由 JVM 来处理。


 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

wps图表怎么改横纵坐标,MLP 多层感知器和CNN卷积神经网络区别

目录 wps表格横纵坐标轴怎么设置? MLP (Multilayer Perceptron) 多层感知器 CNN (Convolutional Neural Network) 卷积神经网络 多层感知器MLP,全连接网络,DNN三者的关系 wps表格横纵坐标轴怎么设置? 1、打开表格点击图的右侧…

深度学习和神经网络

人工神经网络分为两个阶段: 1 :接收来自其他n个神经元传递过来的信号,这些输入信号通过与相应的权重进行 加权求和传递给下个阶段。(预激活阶段) 2:把预激活的加权结果传递给激活函数 sum :加权 f:激活…

零售企业信息化系统建设与应用解决方案

导读:原文《零售企业信息化系统建设与应用解决方案ppt》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 完整版领取方式 如需获取完整的电子版内容参考学习…

几个影响 cpu cache 性能因素及 cache 测试工具介绍

》内核新视界文章汇总《 文章目录 1 cache 性能及影响因素1.1 内存访问和性能比较1.2 cache line 对性能的影响1.3 L1 和 L2 缓存大小1.4 指令集并行性对 cache 性能的影响1.5 缓存关联性对 cache 的影响1.6 错误的 cacheline 共享 (缓存一致性)1.7 硬件设计 2 cpu cache benc…

抖音seo矩阵系统源码保姆式开发部署指导

抖音seo霸屏,是一种专为抖音视频创作者和传播者打造的视频批量剪辑,批量分发产品。使用抖音seo霸屏软件,可以帮助用户快速高效的制作出高质量的优质视频。 使用方法:1. 了解用户的行为习惯 2. 充分利用自身资源进行开发 3. 不…

下级平台级联安防视频汇聚融合EasyCVR平台,层级显示不正确是什么原因?

视频汇聚平台安防监控EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等…

国标GB28181视频监控平台EasyGBS视频无法播放,抓包返回ICMP是什么原因?

国标GB28181视频平台EasyGBS是基于国标GB/T28181协议的行业内安防视频流媒体能力平台,可实现的视频功能包括:实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。国标GB28181视频监控平台部署简单、可拓展性强,支持将…

【高危】Spring Security鉴权规则错误配置风险

漏洞描述 Spring Security 是一套为基于Spring的应用程序提供说明性安全保护的安全框架。 在 Spring Security 受影响的版本中,由于 Spring Security 的授权规则会应用于整个应用程序上下文,当应用程序中包含多个servlet,并且其中一个为Dis…

2023-将jar包上传至阿里云maven私有仓库(云效制品仓库)

一、背景介绍 如果要将平时积累的代码工具jar包,上传至云端,方便团队大家一起使用,一般的方式就是上传到Maven中心仓库(但是这种方式步骤多,麻烦,而且上传之后审核时间比较长,还不太容易通过&a…

rocketmq客户端本地日志文件过大调整配置(导致pod缓存cache过高)

现象 在使用rocketmq时,发现本地项目中文件越来越大,查找发现在/home/root/logs/rocketmqlog目录下存在大量rocketmq_client.log日志文件。 配置调整 开启slf4j日志模式,在项目启动项中增加-Drocketmq.client.logUseSlf4jtrue因为配置使用的…

适用于 Windows 10/11 的 10 款最佳免费 PDF 阅读器软件

PDF 文档非常受欢迎,因为它们可以在任何操作系统上打开,并且很容易附加到电子邮件、消息或网站中。PDF 文档还具有不易更改的优点。因此,它被个人和组织广泛用于简历、学习材料、文档以及外围设备和设备手册的数字副本。 PDF 阅读器软件可帮…

简单认识NoSQL的Redis配置与优化

文章目录 一、关系型数据库与非关系型数据库1、关系型数据库:2、非关系型数据库3、关系型数据库和非关系型数据库区别:4、非关系型数据库应用场景 二.Redis1、简介2、优点:3、Redis为什么这么快? 三、Redis 安装部署1、安装配置2、…

【深度学习Week3】ResNet+ResNeXt

ResNetResNeXt 一、ResNetⅠ.视频学习Ⅱ.论文阅读 二、ResNeXtⅠ.视频学习Ⅱ.论文阅读 三、猫狗大战Lenet网络Resnet网络 四、思考题 一、ResNet Ⅰ.视频学习 ResNet在2015年由微软实验室提出,该网络的亮点: 1.超深的网络结构(突破1000层&…

一、window安装vagrant

篇章一、window安装vagrant 前言 在日常的学习中,需要在Window中学习Linux相关的操作命令,在本地熟悉Linux服务器环境,因此需要在电脑中安装Vagrant虚拟机来管理所需安装的Linux系统(也就是后续的Centos-7)。 1、下…

图形编辑器开发:是否要像 Figma 一样上 wasm

大家好,我是前端西瓜哥。 wasm 拿来做 Web 端的图形编辑器貌似是不错的选择。 因为图形处理会有相当多无法利用到 WebGL GPU 加速的 CPU 密集的计算。比如对一条复杂贝塞尔曲线进行三角化,对多个图形进行复杂图形的布尔运算。 图形编辑器性能天花板 F…

tinkerCAD案例:20. Simple Button 简单按钮和骰子

文章目录 tinkerCAD案例:20. Simple Button 简单按钮Make a Trick Die tinkerCAD案例:20. Simple Button 简单按钮 Project Overview: 项目概况: This is a series of fun beginner level lessons to hone your awesome Tinkercad skills a…

安全学习DAY10_HTTP数据包

文章目录 HTTP数据包![请添加图片描述](https://img-blog.csdnimg.cn/32eb72ceb2d6453b94487edb1a940a43.png)Request请求数据包结构Request请求方法(方式)请求头(Header)Response响应数据包结构Response响应数据包状态码状态码作…

黑客学习手册(自学网络安全)

一、首先,什么是黑客? 黑客泛指IT技术主攻渗透窃取攻击技术的电脑高手,现阶段黑客所需要掌握的远远不止这些。 二、为什么要学习黑客技术? 其实,网络信息空间安全已经成为海陆空之外的第四大战场,除了国…

Java特殊时间格式转化

平常开发过程当中,我们可能会见到有的日期格式是这样的。 1、2022-12-21T12:20:1608:00 2、2022-12-21T12:20:16.0000800 3、2022-12-21T12:20:16.00008:00下面来说一下这种时间格式怎么转换 第一种:2022-12-21T12:20:1608:00 代码如下: p…

二、前端高德地图、渲染标记(Marker)引入自定义icon,手动设置zoom

要实现这个效果,我们先看一下目前的页面展示: 左边有一个图例,我们可以方法缩小地图,右边是动态的marker标记,到时候肯定时候是后端将对应的颜色标识、文字展示、坐标点给咱们返回、我们肯定可以拿到一个list&#xf…