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全景直播是虚拟现实技术和直播的结合。相对于传统直播ÿ…...

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

Unity/C#------委托与事件(一篇文章彻底搞懂...)
一:委托 所有的代码语言创造者母语都是英语,我们从英语翻译到中文的过程中难免会存在一些不太能还原本意的词,比如我之前一直不理解构造函数和析构函数,只知道这俩货作用相反,直到我看到了它的英文意思,Con…...

别再为 Jenkins 安装烦恼,Docker 帮你轻松解决
前言 大家好,又见面了,我是沐风晓月,本文收录与云原生相关的专栏,以下是我的简介: 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,双…...

汇编语言程序设计(一)
前言 在学习汇编语言之前,我们应该要知道汇编语言他是一门怎么样的语言。汇编语言是直接工作在硬件上的一门编程语言,学习汇编语言之前最好先了解一下计算机硬件系统的结构和工作原理。学习汇编语言的重点是学习如何利用硬件系统的编程结构和指令集进而…...
【uni-app教程】四、UniAPP 路由配置及页面跳转
四、UniAPP 路由配置及页面跳转 (1) 路由配置 uni-app页面路由为框架统一管理,开发者需要在pages.json里配置每个路由页面的路径及页面样式。类似小程序在 app.json 中配置页面路由一样。所以 uni-app 的路由用法与 Vue Router 不同,如仍希望采用 Vue …...
ROS从入门到精通系列(二十八)-- ROS控制器图形化界面开发
ROS (Robot Operating System, 机器人操作系统) 作为机器人软件中的通信及控制中间件,提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。ROS遵循BSD开源许可协议。 随着机器人智…...

Submodule命令:android如何将自己项目中的某个Module作为gitlab中第三方公共库
一、创建远程公共库 1、Android Studio创建本地仓库 创建一个新的module 在新建module中添加代码(此处示例代码) 右击新建的module,打开新建module的命令行界面, 因为我们只上传这个module的代码,而不是整个项目的代码 命令行中输入以下命令…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...

c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...

DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...