SpringBoot运维实用篇

SpringBoot运维实用篇

1. 打包与运行

  • 对SpringBoot项目打包(执行Maven构建指令package)。
mvn package
  • 通过命令行执行启动命令。
java -jar springboot.jar
  • jar支持命令行启动需要依赖maven插件支持,确认打包时具有SpringBoot对应的Maven插件。
        <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>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.cqut.SpringBootPro02Application</mainClass>
<!--                    <skip>true</skip>-->
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

  • 通过生成SpringBoot框架,pom生成模板默认打包会跳过主类,打包后的jar包会出现没有主清单属性。将<!--<skip>true</skip>-->注释掉或者改成false。

  • 进入目录,命令行中可以使用Tab进行自动补全文件名。

  • 命令行启动,windows端口被占用,通过查看端口,杀死对应占用端口号。

    # 查看端口
    netstat -ano
    # 查询指定端口
    netstat -ano |findstr "端口号"
    # 根据进程PID查询进程名称
    tasklist |findstr "进程PID号"
    # 根据PID杀死任务
    taskkill /F /PID "进程PID号"
    # 根据进程名称杀死任务
    taskkill -f -t -im "进程名称"
    

2. 配置高级

2.1. 临时属性设置

  • 带属性参数启动SpringBoot。
  • 携带多个属性启动SpringBoot,属性间使用空格隔开。
java -jar springboot.jar --server.port=80 --属性值=值
  • 临时属性必须是当前boot工程支持的属性,否则设置无效。
  • 使用jar命令启动springboot工程时可以使用临时属性替换配置文件中属性,具体属性加载优先顺序可参考官方文档。
@SpringBootApplication
public class SpringBootPro02Application {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootPro02Application.class, args);
    }
}
  • 启动类通过形参String[] args来接收命令行传递过来的参数,再将参数设置传递,实现命令行属性的设置。可以将run方法的参数args删掉,这样命令行的参数就不会起作用了。

2.2. 配置文件分类

  1. SpringBoot中4级配置文件

    • 1级:file:config/application.yml**[最高]**
    • 2级:file:application.yml

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3PBrfxHs-1688966460380)(E:\学习笔记\Java\SpringBoot学习笔记.assets\image-20230710093633283.png)]

    • 3级:classpath:config/application.yml
    • 4级:classpath:application.yml**[最低]**
  2. 作用:

    • 1级和2级留作系统打包后设置通用属性,1级常用作运维经理进行线上整体项目部署方案调控
    • 3级和4级系统开发阶段设置通用属性,3级常用作项目经理进行整体项目属性调控

2.3. 自定属性配置文件

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

  • 通过启动参数加载指定文件路径下的配置文件时可以加载多个配置,以最后加载的配置文件会叠加覆盖前面的配置文件信息

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

3. 多环境开发

3.1. 多环境(YAML)版本

spring:
  profiles:
    active: dev # 指定哪一个环境生效
---
server:
  port: 81
spring:
  config:
    activate:
      on-profile: pro # 生产环境
---
server:
  port: 82
spring:
  config:
    activate:
      on-profile: dev # 开发环境
---
server:
  port: 83
spring:
  config:
    activate:
      on-profile: test # 测试环境

3.2. 多文件版本

  • yaml和properties多文件配置一致。

多环境并发独立配置文件

spring:
  profiles:
    active: dev
    group:
      "dev": devDB,devRedis,devMVC
      "pro": proDB,proRedis,proMVC
      "test": testDB,testRedis,testMVC
  • 当主环境dev与组中其他环境有相同属性时,主环境属性失效。
  • 其他环境中有相同属性时,最后加载的环境属性生效。

3.3. 多环境开发控制

  • 当Maven与SpringBoot同时对多环境进行控制时,以Maven为主,SpringBoot使用@..@占位符读取Maven对应的配置属性值
    <profiles>
        <profile>
            <!--开发环境-->
            <id>env_dev</id>
            <properties>
                <profile.active>dev</profile.active>
            </properties>
        </profile>
        <profile>
            <!--生产环境-->
            <id>env_pro</id>
            <properties>
                <profile.active>pro</profile.active>
            </properties>
            <!--指定默认开启-->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
    </profiles>
spring:
  profiles:
    active: @profile.active@
    group:
      "dev": devDB,devRedis,devMVC
      "pro": proDB,proRedis,proMVC
      "test": testDB,testRedis,testMVC
  • 运行可能出现以下错误信息
Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token
found character '@' that cannot start any token. (Do not use @ for indentation)
 in 'reader', line 28, column 20:
          defaultZone: @eurekaDefaultZone@

需要加上过滤器来解决字符@的问题

<build>     
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <!--开启过滤,用指定的参数替换directory下的文件中的参数-->
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

4. 日志

4.1. 日志基础操作

  • 添加日志记录操作
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class BookController {
    private static final Logger log = LoggerFactory.getLogger(BookController.class);
    public void method(){
        log.info("info");
        log.error("error");
        log.debug("debug");
        log.warn("warn");
    }
}
  • 注意导入包的类型。

  • 设置日志输出级别。

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

# 开启debug模式,输出调试信息,常用于检查系统运行状况
debug: true

# 设置日志级别,root表示根节点,即整体应用日志级别
logging:
  level:
    root: debug
    # 为对应的组设置日志级别
    test1: warn
    test2: debug
    # 为对应包设置日志级别
    com.cqut.controller: debug
  # 设置日志组
  group:
    # 自定义组名,设置当前组中所包含的包
    test1: com.cqut.controller,com.cqut.service
    test2: com.cqut.dao
  • 一共有6种日志记录,常用4种:infowarnerrordebug

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

@RestController
@Slf4j
public class BookController {
    public void method(){
        log.info("info");
    }
}

4.2. 日志输出格式控制

  • PID:进程ID,用于表示当前操作所处的进程,当多服务同时记录日志时,该值可用于协助程序员调试程序
logging:
  pattern:
    console: "%d %clr(%p) --- [%16t] %clr(%-40.40c){cyan} : %m %n"
符号作用
%d输出日期
%clr()显示颜色
%p输出日志级别
数字控制占位宽度
-数字左对齐
.数字表示限制输出长度
%clr(){颜色}选择颜色
%m消息
%n换行

4.3. 日志文件

# 设置日志级别,root表示根节点,即整体应用日志级别
logging:
  file:
    name: server.log
  logback:
    rollingpolicy:
      max-file-size: 4KB
      file-name-pattern: server.%d{yyyy-MM-dd}.i%.log

4.3. 日志文件

# 设置日志级别,root表示根节点,即整体应用日志级别
logging:
  file:
    name: server.log
  logback:
    rollingpolicy:
      max-file-size: 4KB
      file-name-pattern: server.%d{yyyy-MM-dd}.i%.log

可能是错的,测试没有通过。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值