# 打包与运行

# 程序打包与运行(Windows 版)

# 程序为什么要打包

程序不能运行在自己的 PC 上,需要打包挂载到服务器上

# SpringBoot 项目快速启动(Windows 版)

# 对于 SpringBoot 项目打包(执行 maven 构建指令 package)

maven package

# 运行项目(执行启动指令)

java -jar springbootName.jar

# jar 支持命令启动后需要依赖 maven 插件,确保打包时是否又 SpringBoot 对应的插件

<build>
    <plugins>
         <plugin>
             <groupId>org.springframe.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
    </plugins>
</build>

# spring-boot-maven-plugin 插件使用

# 可执行的 jar 包结构图

image-20230124140918398

# jar 包描述文件

基于 spring-boot-maven-plug

Manifest-Version: 1.0
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Archiver-Version: Plexus Archiver
Built-By: 86178
Start-Class: com.example.Springboot08SsmpApplication    //启动类
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Version: 2.3.7.RELEASE
Created-By: Apache Maven 3.8.6
Build-Jdk: 1.8.0_321
Main-Class: org.springframework.boot.loader.JarLauncher    //jar包启动器

# Windows 端口被占用

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

# 临时属性

# 使用 jar 命令启动(配置临时属性)

# 临时属性添加方式

java -jar springbootName.jar --server.port=8080

  1. 多个临时属性使用空格分隔
  2. 临时属性必须是当前 boot 功能有效的,否则设置无效

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

# 通过编程形式带参启动 SpringBoot 程序

public static void main(String[] args){
    String[] arg = new String[1];
    arg[0] = "--server.port=8080";
    SpringApplication.run(SSMApplication.class,arg);
}

# 不携带参数启动 SpringBoot 程序

public static void main(String[] args){
    SpringApplication.run(SSMApplication.class);
}

# 四级配置文件

# SpringBoot 中四级配置文件

级别 方式 路径 级别描述
一级 配置文件 file:config/application.yml 最高
二级 配置文件 file:application.yml 次高
三级 类路径 classpath:config/application.yml 次低
四级 类路径 classpath:application.yml 最低

# 作用

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

# 自定义配置文件

# 单服务项目

使用自定义配置文件需求较低

# 多服务配置项目

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

# 基于 SpringCloud 技术

所有的服务器将不再配置文件,而是通过配置中心进行设定

# 多环境开发

# 多环境开发(yml 版)

# 配置一个主环境和多个其他环境 yml 配置文件

image-20230124142724231

# 主配置文件中设置要启动的环境

spring:
	profiles:
		active: dev

# 多环境开发(priperties 版)

# 主启动配置文件 application.properties

spring.profiles.active=dev

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

# 根据功能对配置文件中信息进行拆分

  1. application-devDB.yml
  2. application-devRedis.yml
  3. application-devMVC.yml

# 使用 include 属性再激活指定环境的情况

spring:
	profiles:
		active: dev
		include: devDB,devRedis,devMVC
# include 加载顺序:devDB devRedis devMVC dev

# 使用 group 属性定义多种主环境与子环境的包含关系

spring:
	profile:
		active: dev
		group: 
			"dev": devDB,devRedis,devMVC
			"prop": proDB,proRedis,proMVC
			"test": testDB,testRedis,testMVC
# group 加载顺序:dev devDB devRedis devMVC

# 多环境开发控制

# Maven 与 SpringBoot 多环境兼容

# Maven 中设置多环境属性

<profiles>
    <profile>
        <id>env_dev</id>
        <properties>
            <profile.active>dev</profile.active>
        </properties>
        //默认环境
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>env_pro</id>
        <properties>
            <profile.active>pro</profile.active>
        </properties>
    </profile>
    <profile>
        <id>env_test</id>
        <properties>
            <profile.active>test</profile.active>
        </properties>
    </profile>
</profiles>

# SpringBoot 中引入 Maven 属性

spring:
	profiles:
		active: @profile.active@

# 执行 Maven 打包指令

生成 boot 打包文件 .jar 文件中查看对应信息

# 在 idea 下测试 pom.xml

每次需要手动 compile 可生效

# 日志

# 日志基础操作

# 日志(log)作用

# 编程期调试代码

# 运行期记录数据

  1. 记录日常运行的重要信息(峰值流量,平均响应时长...)
  2. 记录应用报错信息(错误堆栈)
  3. 记录运维过程数据(扩容,宕机,报警...)

# 代码中使用日志工具类

# 添加日志记录

@RestController
@RequestMapping("/books")
public class BootController {
    private static final Logger log = LoggerFactory.getLogger(BootController.class);
    @GetMapping
    public String geiById(){
        System.out.println("springboot is running............");
        // 添加日志信息
        log.info("info....");
        log.error("error...");
        log.warn("warn...");
        log.debug("debug...");
        return "springboot is running...";
    }
}

日志级别

级别名 描述
TRACE 运行堆栈信息,利用率低
DEBUG 程序员调试代码使用
INFO 记录运维过程数据
WARN 记录运维中报警数据
ERROE 记录错误堆栈信息
FATAL 灾难消息,合并计入 ERROE

# 设置日志输出级别(yaml 配置文件)

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

# 设置日志组,控制指定包对应的输出级别

logging:
    # 设置日志组
    group:
        # 自定义组名,设置当前组中所包含的包
        ebank: com.baozi.controller
    level:
        root warm
        # 为对应组设置日志级别
        ebank: debug
        # 为对应包设置日志级别
        com.baozi.controller: debug

# 优化日志对象创建代码

使用 lombok 提供的注解 @Slf4j 简化开发

@Slf4j
@RestController
@RequestMapping("/books")
public class BootController {
    @GetMapping
    public String geiById(){
        System.out.println("springboot is running............");
        log.info("info....");
        log.error("error...");
        log.warn("warn...");
        log.debug("debug...");
        return "springboot is running...";
    }
}

# 日志输出格式控制

# 认识日志输出格式

image-20230124145019372

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

# 设置日志输出格式

logging:
	pattern:
		console: "%d - %m%n"
# % d:日期
# % m:信息
# % n:换行
logging:
    pattern:
      console: "%d %clr(%5p) --- [%16t] %clr(%-40.40c){cyan} : %m %n"

# 文件输出日志

# 设置日志文件

logging:
    file:
        name: server.log

# 日志文件详细配置

logging:
    file:
      name: server.log
    logback:
      rollingpolicy:
        max-file-size: 4KB
        file-name-pattern: server.%d{yyyy-MM-dd}.%i.log
# % d 表示时间 % i 表示第几个文件
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Baozi 微信支付

微信支付

Baozi 支付宝

支付宝

Baozi 微信

微信