[黑马程序员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.hqwc.cn/news/161220.html

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

相关文章

ch0_OSI 七层网络协议介绍

目录 概述 1、三网融合的概念 三网:电信网络、有线电视网络、计算机网络 概念:把上述三种网络融合成一种网络 2、计算机网络的定义、分类 定义:计算机网络是将地理位置不同的独立计算机系统,通过传输介质链接起来&#xff0c…

大模型进展的主要观点综述

大模型模式的意义可以用两个词来概括:涌现和同质化。涌现意味着一个系统的行为是隐含诱导的,而不是明确构建的;它既是科学兴奋的源泉,也是对意外后果的一种焦虑。同质化表示在广泛的应用程序中构建机器学习系统的方法的整合;它为许多任务提供…

Python最强自动化神器Playwright!再也不用为爬虫逆向担忧了!

版权说明:本文禁止抄袭、转载,侵权必究! 目录 一、简介+使用场景二、环境部署(准备)三、代码生成器(优势)四、元素定位器(核心)五、追踪查看器(辅助)六、权限控制与认证(高级)七、其他重要功能(进阶)八、作者Info一、简介+使用场景 Playwright是什么?来自Chat…

【ArcGIS微课1000例】0077:ArcGIS生成经纬网(shp格式)

使用ArcGIS制图的时候,可以很方便的生成经纬网、方里网及参考格网,但是在需要shp格式的经纬网,进一步在南方cass中使用经纬网的时候,就需要单独生成了。 如下图所示为全球大陆矢量数据,我们基于该数据来生成全球指定间距的经纬网数据。 在ArcGIS中,生成经纬网和方里网均…

基础Redis-结构与命令

结构与命令 1.基础-Redisa.Redis数据结构介绍b.Redis通用命令c.key的结构d.String类型e.Hash类型f.List类型g.Set类型h.SortedSet类型 1.基础-Redis a.Redis数据结构介绍 Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样&a…

网络性能瓶颈分析,让我来说给你听!

在性能测试中,谈到网络问题,其实,在没有特别说明的情况下,我们一般讲的都是 HTTP 协议下的网络瓶颈问题,那,对于这个问题,我们如何来分析呢?计算机中的网络,跟我们现实生…

【技术分享】RK356X Android 使用 libgpiod 测试gpio

前言 libgpiod 是用于与 Linux GPIO 字符设备交互的 C 库和工具库;此项目包含六种命令行工具(gpiodetect、gpioinfo、gpioset、gpioget、gpiomon),使用这些工具可以在命令行设置和获取GPIO的状态信息;在程序开发中也可…

C生万物 | 从浅入深理解指针【第三部分】(qsort的使用和模拟实现)

C生万物 | 从浅入深理解指针【第四部分】(qsort的使用和模拟实现) 文章目录 C生万物 | 从浅入深理解指针【第四部分】(qsort的使用和模拟实现)回调函数是什么?qsort使用举例qsort函数的模拟实现 回调函数是什么&#x…

算法:Java构建二叉树并递归实现二叉树的前序、中序、后序遍历

先自定义一下二叉树的类: // Definition for a binary tree node. public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left…

centos7中多版本go安装

安装go的方式 官网下载tar.gz包安装 # 1.下载tar包 wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz # 2.解压tar包到指定路径 tar -xvf go1.18.1.linux-amd64.tar.gz -C /usr/local/go1.18 # 3.配置环境变量,打开 /etc/profile 文件添加以下文件每次开机时…

【缓存】Spring全家桶中@CacheEvict无效情况共有以下几种

Spring全家桶中CacheEvict无效情况共有以下几种 一、背景介绍二、原因分析三、解决方案 一、背景介绍 SpringBoot中使用Cacheable注解缓存数据,使用CacheEvict注解删除缓存。但是在项目使用过程中,发现使用CacheEvict注解删除缓存无效。 拓展&#xff…

ElementuiPlus的table组件实现行拖动与列拖动

借助了插件sortablejs。这种方法只适合做非树状table。如果想实现树状table&#xff0c;并且可拖动。可以试一下aggridVue3这个插件 <template><div class"draggable" style"padding: 20px"><el-table row-key"id" :data"t…