Spring Boot 2精髓 - (8) 部署

spring boot

Spring Boot 应用部署通常会面临多个部署环境,如测试环境、线上环境、演示环境等

以 jar文件运行

SpringBoot默认以jar包方式运行, 可以在 Maven配置如下插件,将 SpringBoot导出成可执行 的 jar 文件

1
2
3
4
5
6
7
8
9
<!-- Package as an executable jar -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

在工程目录下的运行命令行中运行 mvn package

jar方式运行:

1
java -jar target/target/xxx.x-0.0.1-SNAPSHOT.jar

以war万式部署

将 SpringBoot应用打成一个 war包,部署到 Tomcat 、Jetty服务器,或者商业的 Weblogic、 Websphere 上

多环境部署

测试环境、准线上环境 、 演示环境等

环境对应了不同的配置要求,通常有:

  • 数据库的访问地址不同,数据库用户名和密码也不同,连接池的配置也大不一样,开发环境可能只配置5个连接,而线上环境则多达数百个。
  • 日志配置不同,开发和测试环境的日志级别可能是 debug 级别, 日志信息也常常包含 代码所在行,而线上环境 则 通常是 INFO 级别 ,且为了性能考虑不会输出日志所在行。另外,对日志文件要求也不尽相同, 线上环境要求日志文件能定时打包压缩, 开发环 境则往往不会配置日志文件。
  • 访问的第三方系统不一样,复杂的应用通常要访问第三方系统,如系统内的 Redis 缓存,通过 REST访问其他 SpringBoot应用,这都需要配置不同的 IP地址。
  • 不同的环境有不同的开关属性,比如开发系统,需要关闭短信、微信的通知功能 ,而演示环境、线上环境则需要打开这些配置

application-{profile}.properties的配置文件, 其中profile可以是任意名字,比如:

  • test, 表示测试环境
  • prod,表示线上环境
  • pre-prod, 预发布环境
  • demo1.0 1.0版本演示环境

在环境变量中,spring.profiles.active 指定使用哪个 profile 比如:

1
java -jar -Dspring.profiles.active=prod target/xxx-0.0.1-SNAPSHOT.jar

@Profile注解

  • @Profile 注解以决定配置类是否生效
  • @Profile 注解可以支持使用多种 profile,也可以使用“!”来排除特定 profile
    • @Profile({“test”, “prod”}),测试环境和线上环境生效
    • @Profile({“test”, “!prod”}),测试环境和非线上环境生效

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2021 朝着牛逼的道路一路狂奔 All Rights Reserved.

访客数 : | 访问量 :