[黑马程序员SpringBoot2]——运维实用篇

目录:

  1. 工程打包与运行
  2. 打包插件
  3. Boot工程快速启动(Linux版本)
  4. 临时属性
  5. 配置文件4级分类
  6. 自定义配置文件
  7. 多环境开发(yaml版)
  8. 多环境开发多文件版(yaml版)
  9. 多环境开发多文件版(properties版)
  10. 多环境分组管理
  11. 多环境开发控制
  12. 日志基础操作
  13. 快速创建日志对象
  14. 日志输出格式控制
  15. 文件记录日志

1.工程打包与运行

程序为什么要打包?

SpringBoot项目快速启动(Windows版)

注意事项

  • jar支持命令行启动需要依赖maven插件支持,请确认打包时是否具有SpringBoot对应的maven插件

 

小结:

  1. SpringBoot工程可以基于java环境下独立运行jar文件启动服务
  2. SpringBoot工程执行mvn命令package进行打包
  3. 执行jar命令:java -jar 工程名.jar

 

2.打包插件 

SpringBoot项目快速启动

SpringBoot打包插件

  • 使用SpringBoot提供的maven插件可以将工程打包成可执行jar包

 

 可执行jar包目录结构

jar包描述文件(MANIFEST.MF)

  • 普通工程

 

  • 基于spring-boot-maven-plugin打包的工程

 

  •  Windonws端口被占用

#查询端口                                        netstat -ano

#查询指定端口                                 netstat -ano | findstr "端口号"

#根据进程PID查询进程名称             tasklist | findstr "进程PID号"

#根据PID杀死任务                           taskkill -f  -pid "进程PID号"

#根据进程名称杀死任务                   taskkill -f -t -im “进程名称" 

3.Boot工程快速启动(Linux版本) 

  • 基于Linux (centeroS7)
  • 安装JDk,且版本不低于打包时使用的JDK版本
  • 安装包保存在/usr/local/自定义目录中或$HOME下
  • 其他操作参照windows版进行

小结:

  • 上传安装包
  • 执行jar命令: java -jar工程名.jar 

4. 临时属性

  • 带属性数启动SpringBoot
  •  java –jar springboot.jar –-server.port=80
  • 携带多个属性启动SpringBoot,属性间使用空格分隔

 

参看 https://docs.spring.io/spring-boot/docs/current/reference/html/spring-bootfeatures.html#boot-features-external-config


 

小结:

  1. 使用jar命令启动springBoot工程时可以使用临时属性替换配置文件中的属性
  2. 临时属性添加方式: java -jar 工程名.jar --属性名=值
  3. 多个临时属性之间使用空格分隔
  4. 临时属性必须是当前boot工程支持的属性,否则设置无效 

临时属性设置(开发环境)

  • 带属性启动SpringBoot程序,为程序添加运行属性

 

  • 通过编程形式带参数启动SpringBoot程序,为程序添加运行参数

  •  不携带参数启动SpringBoot程序

 

小结:

  • 启动springBoot程序时,可以选择是否使用命令行属性为springBoot程序传递启动属性

 

 5.配置文件4级分类

  • SpringBoot中4级配置文件
    • 1级: file : config/application.yml     【最高】
    • 2级: file : application.yml
    • 3级: classpath: config/application.yml
    • 4级: classpath: application.yml      【最低】
  • 2.作用:
    • 1级与2级留做系统打包后设置通用属性,1级常用于运维经理进行线上整体项目部署方案调控
    • 3级与4级用于系统开发阶段设置通用属性,3级常用于项目经理进行整体项目属性调控

 

小结:

  • 配置文件分为4种
    • 项目类路径配置文件:服务于开发人员本机开发与测试
    • 项目类路径config目录中配置文件:服务于项目经理整体调控
    • 工程路径配置文件:服务于运维人员配置涉密线上环境
    • 工程路径config目录中配置文件:服务于运维经理整体调控
  • 多层级配置文件间的属性采用叠加并覆盖的形式作用于程序 

 

 

6.自定义配置文件 

通过启动参数加载配置文件(无需书写配置文件扩展名)
 

 

  • 注意事项
  • properties与yml文件格式均支持

通过启动参数加载指定文件路径下的配置文件
 

 

  • 注意事项
  • properties与yml文件格式均支持

通过启动参数加载指定文件路径下的配置文件时可以加载多个配置


 

  • 注意事项
  • 多配置文件常用于将配置进行分类,进行独立管理,或将可选配置单独制作便于上线更新维护 

 

自定义配置文件——重要说明

  • 单服务器项目:使用自定义配置文件需求较低
  • 多服务器项目:使用自定义配置文件需求较高,将所有配置放置在一个目录中,统一管理
  • 基于springCloud技术,所有的服务器将不再设置配置文件,而是通过配置中心进行设定,动态加载配置信息

小结:

  • 配置文件可以修改名称,通过启动参数设定
  • 配置文件可以修改路径,通过启动参数设定
  • 微服务开发中配置文件通过配置中心进行设置 
  • SpringBoot在开发和运行环境均支持使用临时参数修改工程配置
  • SpringBoot支持4级配置文件,应用于开发与线上环境进行配置的灵活设置
  • SpringBoot支持使用自定义配置文件的形式修改配置文件存储位置
  • 基于微服务开发时配置文件将使用配置中心进行管理

 

 7.多环境开发(yaml版)

多环境

 

 

 多环境开发(YAML版)

 

application.yml

spring:profiles:active: dev
---
#生产环境
server:port: 80
spring:config:activate:on-profile: pro
---
#开发环境
server:port: 81
spring:config:activate:on-profile: dev
---
#测试环境
server:port: 82
spring:config:activate:on-profile: test

小结:

  1. 多环境开发需要设置若干种常用环境,例如开发、生产、测试环境
  2. yaml格式中设置多环境使用---区分环境设置边界
  3. 每种环境的区别在于加载的配置属性不同
  4. 启用某种环境时需要指定启动时使用该环境

8.多环境开发多文件版(yaml版)

application.yml

spring:profiles:active: test

application-pro.yml

server:port: 81

application-dev.yml

server:port: 82

application-test.yml

server:port: 83

  • 多环境开发配置文件书写技巧(一)
    • 主配置文件中设置公共配置(全局)
    • 环境分类配置文件中常用于设置冲突属性(局部)

小结:

  1. 可以使用独立配置文件定义环境属性
  2. 独立配置文件便于线上系统维护更新并保障系统安全性 

9.多环境开发多文件版(properties版)


10.多环境分组管理

多环境开发独立配置文件书写技巧(二)

  • 根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下
    • application-devDB.yml
    • application-devRedis.yml
    • application-devMVC.yml
  • 使用include属性在激活指定环境的情况下,同时对多个环境进行加载使其生效,多个环境间使用逗号分隔
     

注意事项

  • 当主环境dev与其他环境有相同属性时,主环境属性生效;其他环境中有相同属性时,最后加载的环境属性生效

从Spring2.4版开始使用group属性替代include属性,降低了配置书写量
使用group属性定义多种主环境与子环境的包含关系

 

小结:

  • 多环境开发使用group属性设置配置文件分组,便于线上维护管理

11.多环境开发控制

1.Maven中设置多环境属性

2.SpringBoot中引用Maven属性


 

3.执行Maven打包指令,并在生成的boot打包文件.jar文件中查看对应信息
 

小结:

  1. 当SpringBoot Maven与SpringBoot 使用@..@占位符读取 同时对多环境进行控制时,以 Maven对应的配置属性值 Mavn为主,
  2. 基于SpringBoot读取Maven配置属性的前提下,如果在Idea下测试工程时pom.xml每次更新需要手动compile方可生效

12.日志基础操作 

  • 日志(log)作用
    • 编程期调试代码
    • 运营期记录信息
      • 记录日常运营重要信息(峰值流量、平均响应时长……)
      • 记录应用报错信息(错误堆栈)
      • 记录运维过程数据(扩容、宕机、报警……)
  • 添加日志记录操作

 

  • 日志级别
    • TRACE:运行堆栈信息,使用率低
    • DEBUG:程序员调试代码使用
    • INFO:记录运维过程数据
    • WARN:记录运维过程报警数据
    • ERROR:记录错误堆栈信息
    • FATAL:灾难信息,合并计入ERROR
  • 设置日志输出级别

 

  •  设置日志组,控制指定包对应的日志输出级别,也可以直接控制指定包对应的日志输出级别

小结:

  1. 日志用于记录开发调试与运维过程消息
  2. 日志的级别共6种,通常使用4种即可,分别是DEBUG,INFO,WARN,ERROR
  3. 可以通过日志组或代码包的形式进行日志显示级别的控制 

13.快速创建日志对象

Maven中设置多环境属性


 

使用lombok提供的注解@Slf4j简化开发,减少日志对象的声明操作

小结:

  • 基于lombok提供的@Slf4j注解为类快速添加日志对象

14.日志输出格式控制

 

  • PID:进程ID,用于表明当前操作所处的进程,当多服务同时记录日志时,该值可用于协助程序员调试程序
  • 所属类/接口名:当前显示信息为SpringBoot重写后的信息,名称过长时,简化包名书写为首字母,甚至直接删除

设置日志输出格式

  • %d:日期
  • %m:消息
  • %n:换行

 

小结:

  • 日志输出格式设置规则

 15.文件记录日志

 设置日志文件

日志文件详细配置


 

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

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

相关文章

vue如何实现视频全屏切换

最近项目开发中遇到一个视频窗口全屏切换功能&#xff0c;为此在这里做个记录。 具体的实现思路&#xff1a; <template><div class"content-box"><div class"container"><div id"screen" class"screen"><…

难题来了:分库分表后,查询太慢了,如何优化?

说在前面&#xff1a; 尼恩社群中&#xff0c;很多小伙伴反馈&#xff0c; Sharding-JDBC 分页查询的速度超级慢&#xff0c; 怎么处理&#xff1f; 反馈这个问题的小伙伴&#xff0c;很多很多。 而且这个问题&#xff0c;也是面试的核心难题。前段时间&#xff0c;有小伙伴…

MySQL数据库干货_13—— MySQL查询数据

MySQL查询数据 SELECT基本查询 SELECT语句的功能 SELECT 语句从数据库中返回信息。使用一个 SELECT 语句&#xff0c;可以做下面的事&#xff1a; 列选择&#xff1a;能够使用 SELECT 语句的列选择功能选择表中的列&#xff0c;这些列是想 要用查询返回的。当查询时&#xf…

vue-render函数的三个参数

第一个参数(必须) - {String | Object | Function} Vue.component(elem, {render: function(createElement) {return createElement(div);//一个HTML标签字符/*return createElement({template: <div></div>//组件选项对象});*//*var func function() {return {t…

使用electron ipcRenderer接收通信消息多次触发

使用electron ipcRenderer接收通信消息多次触发 在使用electron ipcRenderer.on接收ipcRenderer.send的返回值时&#xff0c;ipcRenderer.send发送一次信息&#xff0c; ipcRenderer.on会打印多个日志&#xff0c; renderer.once(get-file-path, (event: any, paths: any) &g…

商用车自动驾驶进入「拐点」时刻

对于自动驾驶的商业化落地来说&#xff0c;这个「性感」的赛道一直备受争议。在过去几年&#xff0c;包括港口、矿山等在内的封闭场景进入商业订单的收获期&#xff1b;但类似干线物流这样的半开放式场景&#xff0c;却喜忧参半。 今年初&#xff0c;作为全球自动驾驶领域的技…

利用MySQL玩转数据分析之基础篇

知识无底&#xff0c;学海无涯&#xff0c;到今天进入MySQL的学习4天了&#xff0c;知识点虽然简单&#xff0c;但是比较多&#xff0c;所以写一篇博客将MySQL的基础写出来&#xff0c;方便自己以后查找&#xff0c;还有就是分享给大家。 1、SQL简述 1&#xff09;SQL的概述 S…

windows 用vs创建cmake工程并编译opencv应用项目生成exe流程简述

目录 前言一、安装opencv&#xff08;1&#xff09;下载&#xff08;2&#xff09;双击安装&#xff08;3&#xff09;环境变量和system文件夹设置 二、打开vs创建项目三、编辑cpp&#xff0c;.h&#xff0c;cmakelist.txt文件&#xff08;1&#xff09;h文件&#xff08;2&…

【Python从入门到进阶】41、有关requests代理的使用

接上篇《40、requests的基本使用》 上一篇我们介绍了requests库的基本使用&#xff0c;本篇我们来学习requests的代理。 一、引言 在网络爬虫和数据抓取的过程中&#xff0c;我们经常需要发送HTTP请求来获取网页内容或与远程服务器进行通信。然而&#xff0c;在某些情况下&…

生成Linux系统下的一些文件

生成Linux系统下的一些文件 文章目录 生成Linux系统下的一些文件1. Initrd1.1 dracut命令1.2 mkinitramfs命令 2. GRUB2.1 Grub2.2 grub.cfg2.3 grub.efi 3. fstab3.1 自动更新3.2 手动更新 4. 生成用户 1. Initrd 通常, lib/modules/下的文件夹名称和内核的版本名是一致的, 所…

通过在Z平面放置零极点的来设计数字滤波器

文章来源地址&#xff1a;https://www.yii666.com/blog/393376.html 通过在Z平面放置零极点的来设计数字滤波器 要求&#xff1a;设计一款高通滤波器&#xff0c;用在音频信号处理过程中&#xff0c;滤掉100Hz以下的信号。 实现方法&#xff1a;通过在Z平面放置零极点的来设…

数据结构与算法【02】—线性表

CSDN系列专栏&#xff1a;数据结构与算法专栏 针对以前写的数据结构与算法系列重写(针对文字描述、图片、错误修复)&#xff0c;改动会比较大&#xff0c;一直到更新完为止 前言 通过前面数据结构与算法基础知识我们知道了数据结构的一些概念和重要性&#xff0c;那么本章总结…

华为政企光传输网络产品集

产品类型产品型号产品说明 maintainProductEA5800-X15 典型配置 上行160G 下行64口GPON 16口XGS PONEA5800系列多业务接入设备定位为面向NG-PON的下一代OLT&#xff0c;基于分布式架构&#xff0c;运用虚拟接入技术&#xff0c;为用户提供宽带、无线、视频回传等多业务统一承…

15、Nuxt.js代理转发解决跨域问题

nuxt.config.js export default {...// Modules: https://go.nuxtjs.dev/config-modulesmodules: ["nuxtjs/axios"],axios: {proxy: true, // 开启代理转发prefix: "/api"},// 代理转发proxy: {/api: {target: "https://mock.mengxuegu.com/mock/654…

【UE 材质】简单的闪闪发光材质

效果 节点 参考视频&#xff1a; https://www.bilibili.com/video/BV1uK411y737/?vd_source36a3e35639c44bb339f59760641390a8

MySQL(8):聚合函数

聚合函数介绍 聚合函数&#xff1a; 对一组数据进行汇总的函数&#xff0c;输入的是一组数据的集合&#xff0c;输出的是单个值。 聚合函数类型&#xff1a;AVG(),SUM(),MAX(),MIN(),COUNT() AVG / SUM 只适用于数值类型的字段&#xff08;或变量&#xff09; SELECT AVG(…

【LeetCode】每日一题 2023_11_4 数组中两个数的最大异或值

文章目录 刷题前唠嗑题目&#xff1a;数组中两个数的最大异或值题目描述代码与解题思路 结语 刷题前唠嗑 LeetCode? 启动&#xff01;&#xff01;&#xff01; 题目&#xff1a;数组中两个数的最大异或值 题目链接&#xff1a;421. 数组中两个数的最大异或值 题目描述 代…

python问题笔记2

70 列表嵌套元组,分别按字母和数字排序 您可以使用Python中的sorted()函数来对列表中的元组进行排序。首先,您需要定义一个自定义的排序函数,以便根据字母或数字进行排序。 以下是一个例子,展示如何按字母和数字分别对嵌套元组进行排序: def sort_by_letter(item):retu…

前端埋点方式

前言&#xff1a; 想要了解用户在系统中所做的操作&#xff0c;从而得出用户在本系统中最常用的模块、在系统中停留的时间。对于了解用户的行为、分析用户的需求有很大的帮助&#xff0c;想实现这种需求可以通过前端埋点的方式。 埋点方式&#xff1a; 1.什么是埋点&#xff1f…

基于Jenkins实现接口自动化持续集成,学完涨薪5k

一、JOB项目配置 1、添加描述 可选选项可填可不填 2、限制项目的运行节点 节点中要有运行环境所需的配置 节点配置教程&#xff1a;https://blog.csdn.net/YZL40514131/article/details/131504280 3、源码管理 需要将脚本推送到远程仓库中 4、构建触发器 可以选择定时构建…