当前位置: 首页 > 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;而不是整个项目的代码 命令行中输入以下命令…...

MySQL索引事务

1.索引1.1概念索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引&#xff0c;并指定索引的类型&#xff0c;各类索引有各自的数据结果实现。&#xff08;这里只用通俗的语言和图片进行介绍&#xff09;1.2作用数据库中的表…...

ISO27001信息安全管理体系认证

​ISO信息安全管理体系认证 一、什么是ISO信息安全管理体系认证&#xff1f; ISO是信息安全管理体系认证&#xff0c;是由国际标准化组织&#xff08;ISO&#xff09;采纳英国标准协会BS-2标准后实施的管理体系&#xff0c;成为了“信息安全管理”的国际通用语言&#xff0c;企…...

Linux应用GUI开发C++ 之gtkmm4(1)

目录概述GTKgtkmm安装gtkmm4hello,worldcodelite配置代码解释概述 GTK GTK是一个小部件工具包。GTK创建的每个用户界面都由小部件组成。这是在C语言中使用GObject实现的&#xff0c;GObject是一个面向对象的C语言框架。窗口小部件是主容器。然后通过向窗口中添加按钮、下拉菜…...

选课系统的设计与实现

技术&#xff1a;Java等摘要&#xff1a;目前国内各高校的规模越来越大&#xff0c;进而造成教师教学管理等工作量日趋加大。然而&#xff0c;现代教育的信息化、网络化已经成为教育发展的一个重要方向&#xff0c;同时也为解决高校教学管理效率低下的现状&#xff0c;使管理突…...

关于安卓的一些残缺笔记

安卓笔记Android应用项目的开发过程Android的调试Android项目文档结构Intent的显式/隐式调用Activity的生命周期1个Activity界面涉及到生命周期的情况2个Activity界面涉及到生命周期的情况Android布局的理论讲解Activity界面布局ContentProvider是如何实现数据共享Android整体架…...

MySQL 中的锁有哪些类型,MySQL 中加锁的原则

锁的类型MySQL 找那个根据加锁的范围&#xff0c;大致可以分成全局锁&#xff0c;表级锁和行级锁。全局锁全局锁&#xff0c;就是对整个数据库加锁。加锁flush tables with read lock解锁unlock tables全局锁会让整个库处于只读状态&#xff0c;之后所有的更新操作都会被阻塞&a…...

Winform中操作Sqlite数据增删改查、程序启动时执行创建表初始化操作

场景 Sqlite数据库 SQLite是一个进程内的库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。 它是一个零配置的数据库&#xff0c;这意味着与其他数据库不一样&#xff0c;您不需要在系统中配置。 就像其他数据库&#xff0c;SQLite 引擎不…...

2023最新版本RabbitMQ下载安装教程

一、RabbitMQ简介 RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。主要用于在进程、应用程序和服务器之间交换数据&#xff0c;可以通过插件支持进行扩展&#xff0c;支持许多协议&#xff0c;并提供高性能、可靠性、集群和高可用队列。 AMQP &#xff1a;Advanced Me…...

如何使用码匠连接 Elasticsearch

目录 在码匠中集成 Elasticsearch 在码匠中使用 Elasticsearch 关于码匠 Elasticsearch 是一个开源的分布式搜索和分析引擎&#xff0c;常用于处理大规模数据集的搜索、实时数据分析和数据挖掘任务。它支持多种数据源&#xff0c;包括关系型数据库&#xff08;如 MySQL、Pos…...

jmeter学习笔记二(jmeter函数与后置处理器)

Jmeter重要的函数 ${__counter(,)} 计数器 ​ ${__counter(TRUE,)} 默认加1; TRUE&#xff0c;每个用户有自己的计数器&#xff1b;FALSE&#xff0c;使用全局计数器 ​ 计数器元件&#xff0c;可以设置起始值&#xff0c;间隔值&#xff0c;最大值。运行结果超过最大值时&a…...

昌平区事业单位公共知识培训网站/百度关键词优化软件怎么样

B/S结构&#xff0c;即Browser/Server(浏览器/服务器)结构&#xff0c;是随着Internet技术的兴起&#xff0c;对C/S结构的一种变化或者改进的结构。在这种结构下&#xff0c;用户界面完全通过WWW浏览器实现&#xff0c;一部分事务逻辑在前端实现&#xff0c;但是主要事务逻辑在…...

vs可以做网站吗/十大中文网站排名

在真实部署环境中&#xff0c;很难将dist生成的内容直接部署到服务器根目录。直接按默认配置build的项目无法在子文件夹中正常运行&#xff0c;需要进行如下配置&#xff1a; 例如&#xff1a; 将项目部署到服务器根目录下的project文件夹下&#xff1a; 修改Router index.js…...

怎么做bs网站/怎样做百度推广网页

点击上方“蓝色字”可关注我们&#xff01;暴走时评&#xff1a;日本银行控股和金融服务公司三菱UFJ金融集团&#xff08;MUFG&#xff09;在11月9日的声明中表示&#xff0c;将使用Ripple&#xff08;XRP&#xff09;为巴西创建一项新的跨境支付服务。MUFG将与巴西的Banco Bra…...

日本做a爱片视频网站/seo自学网

emsp; 我们在GPU的基本概念一节中&#xff0c;讲到过GPU中的内存模型&#xff0c;但那一节只是对模型的简单介绍&#xff0c;这一节&#xff0c;我们对GPU的内存进行更加深入的说明。 首先来回顾一下GPU中的内存&#xff1a; 每个线程都有自己的私有本地内存&#xff08;Loca…...

容桂最新消息/吉林网络seo

1082. Read Number in Chinese (25) 时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueGiven an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese way. Output "Fu" first if it is ne…...

做钢材什么网站好/天津网络推广seo

人工智能&#xff08;AI&#xff09;无处不在&#xff0c;令人着迷。 1997 年&#xff0c;IBM 的深蓝打败了国际象棋大师 Gary Kasparov&#xff1b;IBM 的 Watson 打败了 Jeapordy! 人类冠军。2016 年&#xff0c;DeepMind 的 AlphaGo 通过融合搜索树和深度学习&#xff0c;击…...