8. 部署Spring Boot应用

本文是读《Spring Boot2精髓-从构建小系统到架构分布式大系统》的读书笔记。

如何部署Spring Boot 应用 , Spring Boot 可 以 以 jar 方式运行,也可以部署到支持 Servlet3.0 或者支持较早的 Servlet2.5 的 Web 服务器上。
Spring Boot 应用部署通常会面临多个部署环境,如测试环境、线上环境、演示环境等 , 本
章也会讲述如何支持 Spring Boot 多环境部署。

8.1 以jar文件运行

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

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

>mvn package

package 会将 Maven 工程打包成一个可执行的 jar 文件存放在 target 目录下,在控制台中看到有如下输出则表示输出成功:

为了验证打包成功,可以以 jar 方式运行打包好的 ch8.deploy-O .O. l-SNAPSHOT.jar:

>java -jar target/target/ch8.deploy-0.0.1-SNAPSHOT.jar:

可以将此 jar 文件部署到服务器上,以 jar 方式运行。通常情况下,还需要指定服务器端口、数据库连接地址等信息,我们将在多环境部署中详细讲解。简单的方法是在上面的命令行中传入系统属性,比如,如果应用使用的端口是 8000,数据库的密码是 Testl23 ! C 假设数据库用户名在多环境中保持统一〉 :

>java -jar -Dserver.port=9000 -Dspring . datasource.password=Testl23!
target/chS.deploy-0.0.1-SNAPSHOT.jar

另外一种传入配置的方法是使用命令行参数的方式传递

java -jar target/target/ ch8 . deploy-0. 0 . 1-SNAPSHOT . jar -- server . port=9000
--spring . datasource .password= Testl 23!

8.2 以war方式部署

Spring Boot 默认 自带了一个嵌入式的 Tomcat 服务器,可以以 jar 方式运行,更为常见的情
况是需要将 Spring Boot 应用打成一个 war 包, 部署到 Tomcat 、 Jetty 服务器,或者商业的 Weblogic 、Websphere 上。这种情况下,需要将 porn 中的 packaging 改成 war 方式:

<packaging>war</packaging>

需要将嵌入的 Tomcat 依赖方式改成 provided , 因此增加如下依赖说明 :

<scope>provided</scope>

还需要对 Main 类进行修改,使其继承 SpringBootServletlnitializer 类,并重载 configure 方
法,代码如下:

/**
 * 
 * 这种部署方式适合 Servlet3.0 的 容器,对于 Tomcat? 、 Jetty9 、 Undertowl.2 以上
均支持
 *如果在servlet2.5 容器上部署,请参考 http://ibeetl.com/sb2/#more
 */
@SpringBootApplication
public class Ch8Application extends SpringBootServletInitializer {
	@Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Ch8Application.class);
    }
	public static void main(String[] args) {
		SpringApplication.run(Ch8Application.class, args);
	}

}

8.3 多环境部署

Spring Boot 应用 简化 了配置,所有重要的配置属性都放在 application.properties中 。 Spring Boot 允许准备多个配置文件, 可 以在系统部署 的时候 ,指定使用哪个配置文件覆盖默认的 application.properties , 从而完成多环境部署。
需要在 resources 下创建 application-{profile }.properties 的配置文件, 其中 profile 可以是任意名字,比如 :
test , 表示测试环境 :
prod ,表示线上环境 ;
pre-prod , 预发布环境 :
demo1.0,1.0 版本演示环境。

8.4 @Profile注解

系统属性 spring.profiles.active 可以指定使用哪种配置文件,如果指定 test,则 applicationtest. properties 会覆盖默认的 application.properties 。

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

        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值