SpringBoot运维篇

news2025/1/11 8:12:44

工程打包与运行

windows系统

        直接使用maven对项目进行打包

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

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>>

        直接在cmd窗口中运行

java -jar StudySpringBoot-0.0.1-SNAPSHOT.jar

        若没有该插件jar包不能直接在Java中运行,直接运行会报错“没有主清单属性”

        使用插件与不使用插件的jar包的描述文件不同(MANIFEST.MF)

Windonws端口被占用解决办法(指令在cmd中运行)

        查询端口

netstat -ano

        查询指定端口

netstat -ano | findstr "端口号"

        根据进程PID查询进程名称

tasklist | findstr "进程PID号"

        根据PID杀死任务(-f表示强制杀死)

taskkill /f /pid "进程PID号"

        根据进程名称杀死任务(-f表示强制杀死)

taskkill -f -t -im "进程名称"

 Liunx系统

        基于Linux(CenterOS7)

        安装JDK,且版本不低于打包时使用的JDK版本

        安装包保存在/usr/local/自定义目录中或$HOME下

        其他操作参照Windows版进行

配置高级

临时属性设置

临时属性设置

        在启动项目时可以用临时属性

java -jar StudySpringBoot-0.0.1-SNAPSHOT.jar --server.port=80

        还可以同时设置多个临时属性

java -jar StudySpringBoot-0.0.1-SNAPSHOT.jar --server.port=80 --logging.level.root=debug

         属性加载优先顺序

                参看springboot官方文档(序号越大,优先级越高)

        临时属性必须是当前boot工程支持的属性,否则设置无效

idea中测试临时属性是否能用 

         在上图所示的地方添加临时属性即可,若无该内容需要勾选图中Modlfy options中的Overrid configuration properties 即可。(idea版本不同可能会有些差异)

        临时参数是通过application中传入的参数改变程序运行时的参数的

@SpringBootApplication
public class Application {
    //引导类

    public static void main(String[] args) {
        // 临时传参以字符的形式存入到了args中
        // 若下列代码中不传入args参数则临时传参失效
        SpringApplication.run(Application.class, args);  
    }

}

配置文件分类

SpringBoot中4级配置文件:

        1级: file :config/application.yml 【最高】

        2级: file :application.yml

        3级:classpath:config/application.yml

        4级:classpath:application.yml 【最低】

        1级配置文件需要在jar包所在的文件夹里新建一个名为config的文件夹,将配置文件放到该文件夹里,3级配置文件需要在项目里的resources文件夹里新建一个名为config的文件夹,将配置文件放到该文件夹里。

作用:

        1级与2级留做系统打包后设置通用属性,1级常用于运维经理进行线上整体项目部署案调控

        3级与4级用于系统开发阶段设置通用属性,3级常用于项目经理进行整体项目属性调控

自定义配置文件

        通过启动参数加载配置文件(无需书写配置文件扩展名,且propertiesyml文件格式均支持)

        通过启动参数加载指定文件路径下的配置文件时可以加载多个配置,中间用逗号分开

重要说明:

        单服务器项目:使用自定义配置文件需求较低

        多服务器项目:使用自定义配置文件需求较高,将所有配置放置在一个目录中,统一管理

        基于SpringCloud技术,所有的服务器将不再设置配置文件,而是通过配置中心进行设定,动态加载配置信息

多环境开发

多环境开发(YAML版)

        yaml格式中不同环境之间使用---分开

        使用profiles来设置环境名称,使用active来设置运行的环境

        主配置文件中设置公共配置(全局),环境分类配置文件中常用于设置冲突属性(局部)

# 公共配置
spring:
  profiles:
    active: pro
---
# 设置环境
# 生产环境
spring:
  profiles: pro
server:
  port: 80
---
# 开发环境
spring:
  profiles: dev
server:
  port: 81
---
# 测试环境
spring:
  profiles: test
server:
  port: 82

        直接使用spring的profiles这种格式已过时,下列格式是推荐格式

spring:
 config:
  activate:
   on-profile: pro

也可以将每一个环境分开写(环境名称写在application后用-连接)

        主启动配置文件application.yml

spring:
 profiles:
  active: dev

        环境分类配置文件application-pro.yml

server:
 port: 80

        环境分类配置文件application-dev.yml

server:
 port: 81

        环境分类配置文件application-test.yml

server:
 port: 82

多环境开发(Properties版)

        与yaml版的很相似,但在Properties文件中不同的环境不能写在同一个文件中

        主启动配置文件application.properties:

spring.profiles.active=pro

        环境分类配置文件application-pro.properties:

server.port=80

        环境分类配置文件application-dev.properties:

server.port=81

        环境分类配置文件application-test.properties:

server.port=82

多环境开发独立配置文件书写技巧:

        根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下

application-devDB.yml
application-devRedis.yml
application-devMVC.yml

        使用include属性可以在激活指定环境的情况下,同时对多个环境进行加载使其生效,多个环境间使用逗号分隔

spring:
  profiles:
    active: dev
    include: devDB,devRedis,devMVC

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

        include在用的时候有一些不便之处,从Spring2.4版开始可以使用group属性替代include属性,降低了配置书写量

         使用group属性定义多种主环境与子环境的包含关系:
spring:
  profiles:
    active: dev
    group:
      "dev": devDB,devRedis,devMVC
      "pro": proDB,proRedis,proMVC
      "test": testDB,testRedis,testMVC
        多环境开发使用group 属性设置配置文件分组,便于线上维护管理

多环境开发控制

        Maven与SpringBoot多环境兼容。当Maven与SpringBoot同时对多环境进行控制时,以Maven为主。SpringBoot使用@..@占位符读取Maven对应的配置属性值

        Maven中设置多环境属性:
<profiles>
    <profile>
        <id>dev_env</id>
        <properties>
            <profile.active>dev</profile.active>
            <!--profile.active只是一个名称-->
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
            <!--上列值为true表示使用该环境,若不设置为true默认为false即不会加载-->
        </activation>
    </profile>
    <profile>
        <id>pro_env</id>
        <properties>
            <profile.active>pro</profile.active>
        </properties>
    </profile>
    <profile>
        <id>test_env</id>
        <properties>
            <profile.active>test</profile.active>
        </properties>
    </profile>
</profiles>
        SpringBoot中引用 Maven 属性:
spring:
  profiles:
    active: @profile.active@

        每次更改环境后都要重新打包才能生效。若使用idea直接运行时pom.xml每次更新需要手动compile才可生效

日志

日志基础

日志(log)作用:

        编程期调试代码

        运营期记录信息

                记录日常运营重要信息(峰值流量、平均响应时长……)

                记录应用报错信息(错误堆栈)

                记录运维过程数据(扩容、宕机、报警……)

        添加日志记录操作:

@RestController
@RequestMapping("/hero")
public class HeroController {

    private static final Logger log = LoggerFactory.getLogger(HeroController.class);

    @RequestMapping("/test")
    public String test() {
        System.out.println("springboot is running...");
        log.debug("debug ...");
        log.info("info ...");
        log.warn("warn ...");
        log.error("error ...");
        return "springboot is running...";
    }
}

        日志级别:

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

        设置日志输出级别:

# 开启debug模式,输出调试信息,常用于检查系统运行状况
debug: true
# 设置日志级别,root表示根节点,即整体应用日志级别
logging:
  level:
    root: debug

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

logging:
  # 设置日志组
  group:
    # 自定义组名,设置当前组中所包含的包
    bank: com.glaty.studyspringboot.Controller
  level:
    root: warn
    # 为对应组设置日志级别
    bank: debug
    # 为对包设置日志级别
    com.glaty.studyspringboot.Controller: debug

        每一个controller都要定义一个Logger,可以直接在类上加lombok提供的@Slf4j注解,减少日志对象的声明操作。

@Slf4j
@RestController
@RequestMapping("/hero")
public class HeroController {

    @RequestMapping("/test")
    public String test() {
        System.out.println("springboot is running...");
        log.debug("debug ...");
        log.info("info ...");
        log.warn("warn ...");
        log.error("error ...");
        return "springboot is running...";
    }
}

日志输出格式控制

格式:

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

格式控制:

        %d:日期

        %p:日志级别

        %t:所属线程

        %c:所属类/接口名

        %m:消息
        %n:换行

        %clr(){}:颜色,小括号里填要改变颜色的信息,大括号可以省略(省略后里边的内容也要省略)内容填颜色

        %16t表示占位大于等于16右对齐,%-40.40c表示左对齐截取后40位(-号表示左对齐)

logging:
  pattern:
    console: "%d %clr(%p) --- [%16t] %clr(%-40.40c){cyan} : %m %n"

        一般当日志格式确定后不会再设置日志格式

日志文件

        日志信息一般储存在文件里

设置日志文件

logging:
  file:
    name: server.log

日志文件详细配置

logging:
  file:
    name: server.log
  logback:
    rollingpolicy:
      max-file-size: 3KB
      file-name-pattern: server.%d{yyyy-MM-dd}.%i.log

 max-file-size:设置每个文件的最大大小

file-name-pattern:设置文件的名称(%d为时间,%i为序号从0开始依次加一,)

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

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

相关文章

Mysql在Windows系统下安装以及配置

目录 一、下载Mysql 二、安装Mysql及环境配置 一、下载Mysql 1. 下载地址 官网:https://www.mysql.com&#xff0c;这里我选用的是Mysql8.0.37版本&#xff08;版本无所谓&#xff0c;随便下8.0.几都行&#xff09; 2.点击DOWNLOADS 然后&#xff0c;点击 MySQL Community…

React中的useMemo和memo

引言 React是一个声明式的JavaScript库&#xff0c;用于构建用户界面。在开发过程中&#xff0c;性能优化是一个重要的方面。useMemo和memo是React提供的工具&#xff0c;用于帮助开发者避免不必要的渲染和计算&#xff0c;从而提升应用性能。 问题背景 在React应用中&#…

计算样本之间的相似度

文章目录 前言一、距离度量1.1 欧几里得距离&#xff08;Euclidean Distance&#xff09;1.2 曼哈顿距离&#xff08;Manhattan Distance&#xff09;1.3 切比雪夫距离&#xff08;Chebyshev Distance&#xff09;1.4 闵可夫斯基距离&#xff08;Minkowski Distance&#xff09…

2024世界人工智能大会,神仙打架

B站&#xff1a;啥都会一点的研究生公众号&#xff1a;啥都会一点的研究生 AI圈最近又发生了啥新鲜事&#xff1f; 该栏目以周更频率总结国内外前沿AI动态&#xff0c;感兴趣的可以点击订阅合集以及时收到最新推送 B站首秀世界人工智能大会&#xff0c;展示自研AI技术与AIGC…

springboot配置扫描生效顺序

文章目录 举例分析项目结构如下noddles-user-backend 两个配置文件noddles-user-job 配置文件noddles-user-server 配置文件问题:server和Job启动时对应加载的数据库配置为哪一个&#xff1f; 总结 在微服务架构中&#xff0c;backend模块会定义一个基础的配置文件&#xff0c;…

Python网络爬虫:Scrapy框架的全面解析

Python网络爬虫&#xff1a;Scrapy框架的全面解析 一、引言 在当今互联网的时代&#xff0c;数据是最重要的资源之一。为了获取这些数据&#xff0c;我们经常需要编写网络爬虫来从各种网站上抓取信息。Python作为一种强大的编程语言&#xff0c;拥有许多用于网络爬虫的工具和库…

永磁同步电机无速度算法--滑模观测器(反正切、反余弦)

一、原理介绍 在永磁同步电机滑模观测器控制中&#xff0c;转子的位置和转速信息与反动电势密切相关。滑模观测器控制基本设计思路是&#xff1a;利用永磁同步电机的电压、电流信息&#xff0c;通过永磁同步电机数学模型&#xff0c;估算出电机在两相静止坐标系中的反电动势信…

鸿蒙NEXT不再支持安卓这条路真的走的通吗?

前言 看到高赞又是一片嘲讽&#xff0c;“apk换种打包方式”等等轻松拿几百赞&#xff0c;我也是无语。 国内多家互联网大厂都已经启动HarmonyOS Next应用开发&#xff0c;预计明年正式上线&#xff0c;如今业内很多人都已经知道了。 网络上相关报道也有很多&#xff0c;新浪…

[数据结构] 归并排序快速排序 及非递归实现

&#xff08;&#xff09;标题&#xff1a;[数据结构] 归并排序&&快速排序 及非递归实现 水墨不写bug &#xff08;图片来源于网络&#xff09; 目录 (一)快速排序 类比递归谋划非递归 快速排序的非递归实现&#xff1a; &#xff08;二&#xff09;归并排序 归…

antdesignvue对话框用户可移动并缩放

原贴 轻松搞定Ant Design Modal对话框拖拽缩放 - ByteZoneX社区https://www.bytezonex.com/archives/IFRuoJhd.html Ant Design 模态对话框&#xff1a;实现拖拽缩放功能 **子 Ant Design 是一个流行的前端 UI 框架&#xff0c;提供了一系列实用的组件&#xff0c;包括模态对…

数据结构——二叉树相关题目

1.寻找二叉树中数值为x的节点 //寻找二叉树中数值为x的节点 BTNode* TreeFind(BTNode* root, BTDataType x)//传过来二叉树的地址和根的地址&#xff0c;以及需要查找的数据 {if (root Null){return Null;}//首先需要先判断这个树是否为空&#xff0c;如果为空直接返回空if (…

Linux下fcitx框架输入法输入中文标点时为半角(英文)标点符号的解决

目录 引入解决1.打开fcitx设置2.打开全局配置3. 随便找个可以输入地方敲下快捷键 总结 本文由Jzwalliser原创&#xff0c;发布在CSDN平台上&#xff0c;遵循CC 4.0 BY-SA协议。 因此&#xff0c;若需转载/引用本文&#xff0c;请注明作者并附原文链接&#xff0c;且禁止删除/修…

RNN 交叉熵

RNN善于处理时序 序列数据 简单RNN 展开就是 LSTM 遗忘门f_t决定上期记忆保留多少 隐藏层 在神经网络中&#xff0c;隐藏层指的是除了输入层和输出层之外的层&#xff0c;它们的输出不会直接用于网络的最终输出&#xff0c;而是作为中间步骤用于提取和转换数据。因此&#x…

构件软件开发-系统架构师(二十五)

1、一路和二路公交车都将在10分钟随机到达同一车站&#xff0c;他们相隔四分钟的概率是&#xff08;&#xff09;。 A0.36 B0.48 C0.64 D0.76 解析&#xff1a; 如果把x为1路&#xff0c;y为2路&#xff0c;则x-y4&#xff0c;y-x4 所以可以得到坐标 (4,0)(10,6)(0,4)(6,1…

(ECCV,2022)Mask-CLIP:从CLIP中提取自由密集标签

文章目录 Extract Free Dense Labels from CLIP相关资料摘要引言方法Mask-CLIPMask-CLIP 实验 Extract Free Dense Labels from CLIP 相关资料 代码&#xff1a;https://github.com/chongzhou96/MaskCLIP 论文&#xff1a;https://arxiv.org/abs/2112.01071 摘要 对比语言-…

PyVideoTrans:一款功能全面的视频翻译配音工具!【送源码】

PyVideoTrans是一款功能全面的视频翻译配音工具&#xff0c;专为视频内容创作者设计。它能够将视频中的语言翻译成另一种语言&#xff0c;并自动生成与之匹配的字幕和配音。支持多种语言&#xff0c;包括但不限于中文&#xff08;简繁体&#xff09;、英语、韩语、日语、俄语、…

算法010:无重复字符的最长子串

无重复字符的最长子串. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/longest-substring-without-repeating-characters/ 使用的算法&#xff1a;滑动窗口 在这个…

apk反编译修改教程系列-----修改apk 解除软件限制功能 实例操作步骤解析_3【二十二】

在前面的几期博文中有过解析去除apk中功能权限的反编译步骤。另外在以往博文中也列举了修改apk中选项功能权限的操作方法。今天以另外一款apk作为演示修改反编译去除软件功能限制的步骤。兴趣的友友可以参考其中的修改过程。 课程的目的是了解apk中各个文件的具体作用以及简单…

C-11 三角剖分的调研

C-11 三角剖分算法 三角剖分就是将输入的多边形&#xff0c;分割成一系列互不重叠的三角形&#xff0c;其重要性就在这不多赘述。这个是一个别人总结的链接&#xff1a;http://vterrain.org/Implementation/Libs/triangulate.html 图片链接&#xff1a;http://www-cgrl.cs.m…

STM32点灯闪烁

stm32c8t6引脚图 开发板引脚图 GPIO端口的每个位可以由软件分别配置成 多种模式。 ─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能 配置GPIO端口步骤&#xff1a;开启时钟->使用结构体设置输出模式…