# 打包与运行
# 程序打包与运行(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 包结构图
# 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 "端口好" |
| |
| tasklist |findstr "进程PID号" |
| |
| tasklist /F /PID "进程PID号" |
| |
| taskkill -f -t -im "进程名称" |
# 临时属性
# 使用 jar 命令启动(配置临时属性)
# 临时属性添加方式
java -jar springbootName.jar --server.port=8080
- 多个临时属性使用空格分隔
- 临时属性必须是当前 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 |
最低 |
# 作用
- 一级和二级留作系统打包后设置通用属性,一级常用于运维经理线上整体项目部署方案调控
- 三级和四级用于系统开发阶段设置通常属性,3 级常用于项目经理进行整体项目属性调控
# 自定义配置文件
# 单服务项目
使用自定义配置文件需求较低
# 多服务配置项目
使用自定义配置文件需求较高,将所有配置放置在一个目录中,统一管理
# 基于 SpringCloud 技术
所有的服务器将不再配置文件,而是通过配置中心进行设定
# 多环境开发
# 多环境开发(yml 版)
# 配置一个主环境和多个其他环境 yml 配置文件
# 主配置文件中设置要启动的环境
| spring: |
| profiles: |
| active: dev |
# 多环境开发(priperties 版)
# 主启动配置文件 application.properties
| spring.profiles.active=dev |
# 多环境开发独立配置文件书写技巧
# 根据功能对配置文件中信息进行拆分
- application-devDB.yml
- application-devRedis.yml
- application-devMVC.yml
# 使用 include 属性再激活指定环境的情况
| spring: |
| profiles: |
| active: dev |
| include: devDB,devRedis,devMVC |
| |
# 使用 group 属性定义多种主环境与子环境的包含关系
| spring: |
| profile: |
| active: dev |
| group: |
| "dev": devDB,devRedis,devMVC |
| "prop": proDB,proRedis,proMVC |
| "test": testDB,testRedis,testMVC |
| |
# 多环境开发控制
# 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)作用
# 编程期调试代码
# 运行期记录数据
- 记录日常运行的重要信息(峰值流量,平均响应时长...)
- 记录应用报错信息(错误堆栈)
- 记录运维过程数据(扩容,宕机,报警...)
# 代码中使用日志工具类
# 添加日志记录
| @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: true |
| |
| 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..."; |
| } |
| } |
# 日志输出格式控制
# 认识日志输出格式
- PID:进程 ID,用于表明当前操作所处的进程,当多服务同时记录日志时,该值可用于协助程序员调试程序
- 所属类 / 接口名:当前显示信息为 SpringBoot 重写后的信息,名称过长时,简化包名书写为首字母,甚至直接删除
# 设置日志输出格式
| logging: |
| pattern: |
| console: "%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 |
| |