当前位置: 首页 > news >正文

Spring Boot

目录

SpringBoot

SpringBoot创建和使用

什么是Spring Boot

Spring Boot优点

Spring Boot项目的创建

项目目录介绍和运行 

目录介绍

项目运行 

SpringBoot核心设计思想

 SpringBoot的配置文件

配置文件的作用

配置文件的格式

 注意事项

properties配置文件

properties的设置

properties的读取

properties的缺点

yml配置文件

yml语法

yml字符串修饰符的问题

yml配置对象

yml配置集合

解决配置文件乱码问题

多平台的配置文件设置

Spring Boot日志文件

自定义日志打印

日志格式说明

开发者自定义日志打印过程

 日志持久化

1.设置日志的名称

2.设置日志的保存路径

日志级别分类和使用

日志的优先级

日志的级别设置

更简单的日志输出

1.添加lombok框架

 2.使用@slf4j注解输出日志

 lombok作用


SpringBoot

SpringBoot创建和使用

什么是Spring Boot

在之前的学习中我们了解了Spring,Spring是具有众多工具方法的IoC容器,Spring是为了简化Java程序开发的,而Spring Boot就是为了简化Spring程序的开发

Spring Boot优点

1.快速集成框架,Spring Boot 提供了启动添加依赖的功能

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

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

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

5.更多的监控指标,更好的了解项目的运行情况

Spring Boot项目的创建

这里使用的是idea社区版(2021.3.2)需要安装插件(Spring Boot Helper)才能创建Spring Boot

 安装完成之后可以创建新项目来验证是否成功安装,有下面图标表示安装完成

 还可以通过Spring官网提供的网页进行创建Spring Boot项目

 

项目目录介绍和运行 

目录介绍

项目运行 

Spring Boot项目创建成功我们就来试着运行

可以看到输出的内容是我们所需要的,但是具体细节内容还需要后面介绍,这里只是先验证是否能使用

SpringBoot核心设计思想

我们在不修改代码的前提下只是将TestController修改到别的包中,发现程序报错了

这就需要提及SpringBoot核心设计思想:约定大于配置,SpringBoot会扫描启动类同级目录或下级目录,必须按照约定才能正常运行

 SpringBoot的配置文件

在SpringBoot项目中主要的代码就两类,一是业务代码(Java下的),另一类就是resource下的资源文件,因此就能看出配置文件的重要性

配置文件的作用

在项目中所有重要的数据都是在配置文件中配置的

1.数据库的连接信息(用户名和密码的设置等)

2.项目的启动端口

3.第三方系统调用秘钥等信息

4.用于发现和定位问题的普通日志和异常日志等

配置文件的格式

SpringBoot提供了两种格式的配置文件分别为.properties和.yml

 注意事项

在SpringBoot中.properties和.yml配置文件理论上是可以同时存在的,当两个配置文件有着相同的配置,那么会以.properties为主,说明是 .properties 配置文件件的优先级最高,但加载完 .properties文件之后,也会加载 .yml文件的配置信息,但是为了维护建议采用统一的配置文件格式, .properties配置文件是早期的配置文件格式,也是SpringBoot默认的配置文件

properties配置文件

properties的设置

#设置端口号
server.port=9090
#设置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/myblog2023?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=12345678

properties是以键值对的形式配置的,key和value是以"="连接的

配置文件中可以使用"#"添加注解信息

配置文件内容分为SpringBoot内置的配置项和用户自定义的配置项

properties的读取

在项目中想要获取配置文件中的内容,需要添加@Value注解

@Value要使用${}格式才能正常读取

properties的缺点

properties是以key-value的格式配置的,但是在配置key时可能出现很多冗余的信息,如何简化就需要使用yml配置格式了

yml配置文件

yml是YAML的缩写,全称 Yet Another Markup Language翻译成中文是"另一种标记语言"

yml语法

注意:冒号后面的空格,以及多级目录的层级划分

 yml读取方式与properties的方式相同都是使用@Value注解

yml字符串修饰符的问题

yml配置如果使用了双引号修饰value值,那么value值中的特殊字符串就会发挥自身的用途 

yml配置对象

在配置对象时读取需要添加注解@ConfigurationProperties配合类注解,并且类中的getter()和setter()方法必不可少

yml配置集合

注意配置的格式"-"和空格是必不可少的,读取和读对象是一样的都是采用@ConfigurationProperties配合类注解一起,我这里使用了@Data注解内置了get()和set()方法

解决配置文件乱码问题

我们在application.properties配置文件中写的注解等中文,在关闭项目在打开后就会出现乱码现象,如何解决呢

 修改encoding的编码格式为utf-8,注意设置当前项目和以后项目两处的编码格式

多平台的配置文件设置

一个项目需要在多个环境下部署,如何解决不同环境下的配置问题,可以设置不同名称的配置文件

 通过在application.yml中设置spring.profiles.active=dev/prod/test,决定环境的使用,active属于profiles下的一个属性,不能写成同一目录

#运行环境设置
spring:profiles:active: prod

Spring Boot日志文件

日志是程序不可或缺的一部分,在程序报错时可以定位问题,同时还能够记录需要的信息,接下来我会通过三个问题来介绍日志的使用

1.输出自定义日志

2.将日志持久化

3.通过设置日志的级别来筛选和控制日志的内容

自定义日志打印

日志格式说明

开发者自定义日志打印过程

1.得到日志对象

private static Logger logger= LoggerFactory.getLogger(TestController.class);

 注意:Logger 对象是属于 org.slf4j 包下的,不要导⼊错包

 Spring Boot 中内置了日志框架 Slf4j,所以咱们可以直接在程序中调用 slf4j 来输出日志

2.使用日志对象提供的方法,输出自定义的日志内容

日志打印方法有很多这里通过info()方法输出日志

 日志持久化

1.设置日志的名称

#设置日志的保存名称
logging:file:name: springboot.log

 注意:日志不会丢失,会一直追加,当日志文件比较大的时候会自动分割,分割为多个文件

2.设置日志的保存路径

logging:file:path: C:\work\

默认日志文件名为spring.log

日志级别分类和使用

日志的优先级

日志的优先级为: trace(微量)  debug(调试时打印信息)  info(默认)  warn(警告) error(报错) fatal(致命的,代码异常导致程序退出)

日志的级别设置

日志级别配置只需要在配置文件中设置"logging.level"配置项即可

更简单的日志输出

在上面的学习中我们需要先拿到日志对象也就是需要在类中LoggerFactory.getLogger(xxx.class)

比较麻烦如何高效的输出呢,这里就需要使用lombok

1.添加lombok框架

在pom.xml中添加依赖,或者使用插件EditStarters添加框架支持

 2.使用@slf4j注解输出日志

 注意:在使用@slf4j注解,程序需要使用log对象才能输入输出日志对象,这是lombok提供的对象名

 lombok作用

相关文章:

Spring Boot

目录 SpringBoot SpringBoot创建和使用 什么是Spring Boot Spring Boot优点 Spring Boot项目的创建 项目目录介绍和运行 目录介绍 项目运行 SpringBoot核心设计思想 SpringBoot的配置文件 配置文件的作用 配置文件的格式 注意事项 properties配置文件 propertie…...

图论初入门

目录 一、前言 二、图的概念 三、例题及相关概念 1、全球变暖(2018年省赛,lanqiao0J题号178) 2、欧拉路径 3、小例题 4、例题(洛谷P7771) 一、前言 本文主要讲了树与图的基本概念,图的存储、DFS遍历…...

02-Oracle数据库的启动与关闭

本文章主要讲解Oracle数据库的启动与关闭方法,详细讲解启动Oracle的命令,三种启动数据库的方法及区别;关闭数据库的4种方法及他们的区别。 启动和关闭数据库 •数据库没启动前,只有拥有DBA权限或者以sysoper或sysdba身份才能连接到…...

网络营销培训完能达到什么水平?学完能创业吗?

网络营销本身就是一门创业的技术,很多人学习网络营销,往往担心学完以后技术达不到,再工作几年才可以创业,实际这是错误的理解,那么,网络营销培训完能达到什么水平?新手学员参加网络营销培训&…...

大数据技术之——zeppelin数据清洗

一、zeppelin的安装zeppelin解压后进入到conf配置文件界面。修改zeppelin-site.xml[roothadoop02 conf]# cp zeppelin-site.xml.template zeppelin-site.xml[roothadoop02 conf]# vim zeppelin-site.xml将IP地址和端口号设置成自己的修改 zeppelin-env.shexport JAVA HOME/opt/…...

Barra模型因子的构建及应用系列五之NonLinear Size因子

一、摘要 在前期的Barra模型系列文章中,我们构建了Size因子、Beta因子、Momentum因子和Residual Volatility因子,并分别创建了对应的单因子策略,本节文章在该系列下进一步构建NonLinear Size因子。从回测结果看,自2022年以来&…...

C++ 常用命令行开发工具(Linux)

文章目录1、简介2、gcc / g2.1 system(执行shell 命令)2.2 popen(建立管道I/O)2.3 vforkexec(新建子进程)3、clang3.1 下载和安装clang3.2 clang和gcc比较3.2.1 gcc3.2.2 clang3.2.3 LLVM4、make4.1 例子14…...

java基础学习 day47(抽象类,抽象方法)

1. 抽象方法 将共性的行为(方法)抽取到父类之后,由于每一个子类执行的内容是不一样的,所以,在父类中不能确定具体的方法体,该方法就可以定义为抽象方法。抽象方法定义格式: public abstract 返…...

Java代码弱点与修复之——Open redirect(开放重定向)

弱点描述 Open redirect , 开放重定向,是一种常见的安全漏洞,也被称为“重定向漏洞”。该漏洞通常出现在 Web 应用程序中,攻击者可以利用它将用户重定向到恶意站点,从而进行钓鱼攻击、恶意软件传播、诱骗等活动。 在 Java 中,通过重定向 HTTP 请求来实现应用程序中的跳转…...

Go 指针

指针在编程中,一个内存地址用来定位一段内存。通常地,一个内存地址用一个操作系统原生字(native word)来存储。 一个原生字在32位操作系统上占4个字节,在64位操作系统上占8个字节。 所以,32位操作系统上的理…...

shardingsphere5.1.1分表分库yaml配置 自定义策略

前言通过阅读官方稳定给出示例 https://shardingsphere.apache.org/document一、基本配置示例spring:sharding:datasource:names: ds0, ds1ds0:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/db0username: rootpassword: rootds1:driver-class-na…...

“探索未来:VR全景直播技术引领新媒体时代”

随着虚拟现实技术的不断发展,VR全景直播已经成为了越来越受欢迎的直播形式。VR全景直播可以让观众通过虚拟现实设备亲临直播现场,享受身临其境的观看体验。VR全景直播是什么? VR全景直播是虚拟现实技术和直播的结合。相对于传统直播&#xff…...

Spring Cloud(微服务)学习篇(六)

Spring Cloud(微服务)学习篇(六) 2 Sentinel实现流量规则(控制台版) 2.1 变更pom.xml(shop-user-server项目)代码 2.1.1 加入如下依赖 <!--熔断限流--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-…...

MATLAB-Scatter3-三维散点图投影至XYZ三个平面

MATLAB-Scatter3函数可以绘制立体的三维散点图&#xff0c;但有时候需要在该立体图中分析X-Y-Z三者的关系&#xff0c;即1副图呈现出4个信息&#xff0c;XYZ综合信息、XY信息、XZ信息、YZ信息。现有的Scatter3无法实现该功能&#xff0c;本文可实现Scatter3三维立体散点图在三个…...

Unity/C#------委托与事件(一篇文章彻底搞懂...)

一&#xff1a;委托 所有的代码语言创造者母语都是英语&#xff0c;我们从英语翻译到中文的过程中难免会存在一些不太能还原本意的词&#xff0c;比如我之前一直不理解构造函数和析构函数&#xff0c;只知道这俩货作用相反&#xff0c;直到我看到了它的英文意思&#xff0c;Con…...

别再为 Jenkins 安装烦恼,Docker 帮你轻松解决

前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓月&#xff0c;本文收录与云原生相关的专栏&#xff0c;以下是我的简介&#xff1a; &#x1f3e0;个人主页&#xff1a;我是沐风晓月 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是沐风晓月&#xff0c;双…...

汇编语言程序设计(一)

前言 在学习汇编语言之前&#xff0c;我们应该要知道汇编语言他是一门怎么样的语言。汇编语言是直接工作在硬件上的一门编程语言&#xff0c;学习汇编语言之前最好先了解一下计算机硬件系统的结构和工作原理。学习汇编语言的重点是学习如何利用硬件系统的编程结构和指令集进而…...

【uni-app教程】四、UniAPP 路由配置及页面跳转

四、UniAPP 路由配置及页面跳转 (1) 路由配置 uni-app页面路由为框架统一管理&#xff0c;开发者需要在pages.json里配置每个路由页面的路径及页面样式。类似小程序在 app.json 中配置页面路由一样。所以 uni-app 的路由用法与 Vue Router 不同&#xff0c;如仍希望采用 Vue …...

ROS从入门到精通系列(二十八)-- ROS控制器图形化界面开发

ROS (Robot Operating System, 机器人操作系统) 作为机器人软件中的通信及控制中间件,提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。ROS遵循BSD开源许可协议。 随着机器人智…...

Submodule命令:android如何将自己项目中的某个Module作为gitlab中第三方公共库

一、创建远程公共库 1、Android Studio创建本地仓库 创建一个新的module 在新建module中添加代码(此处示例代码) 右击新建的module&#xff0c;打开新建module的命令行界面&#xff0c; 因为我们只上传这个module的代码&#xff0c;而不是整个项目的代码 命令行中输入以下命令…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...