spring boot项目发布war包部署到tomcat

我有个spring boot项目,在intellij idea里运行得好地地,结果发布成war包,部署到tomcat里,报404,死活无法访问。

原因是,代码还少了点东西。在项目的启动类里,需要重载SpringBootServletInitializer.configure。原因是spring boot默认情况下使用了嵌入容器,支持项目的运行。但发布成war包,扔到tomcat里,就没有这个天然支持了,需要在代码里显式使用?

/**
 * 默认情况下是自带的嵌入式容器,如果需要构建war文件并进行部署时
 * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
 * 打成war包放到tomcat中启动必须要这个类才行
 */
@SpringBootApplication
public class BattleManagerApplication extends SpringBootServletInitializer{
 
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(BattleManagerApplication.class);
	}
 
 	//原本我的代码只有这个方法,并无上面的重载。这个在开发环境里是没有问题的
	public static void main(String[] args) {
		SpringApplication.run(BattleManagerApplication.class, args);
	}
}

参考文章:
Spring Boot修改启动类

开始时我以为是发布WAR包不得法,但其实发布过程没有问题:
在这里插入图片描述
在这里插入图片描述

补充说明:
发布成war包,我感觉是一个升华的过程,迫使我们的代码变得严谨。比如,含有汉字内容的文件,必须显式指定字符编码读取;URL中的大小写问题;URL的相对路径问题,等等,这些在开发环境中都不是事,结果发布成WAR包以后,放到服务器一跑,就到处报错,到处漏水了。只能一一修正。但是,修正了之后,就让人放心多了。

另外,发布成war包再部署到服务器比较繁琐,以此来发现问题,一来一回,太耗时。可以在开发环境中用tomcat来跑:

参考拙作:
intellij idea 应用 tomcat 等

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值