springboot在本地开发通过,部署到服务器上失败,无法访问

自己在本地开发以及测试是没有问题,但是部署到服务器上之后访问失败,先看一下我的简单配置吧

pom.xml文件:工程的打包方式为war

将spring-boot-starter-tomcat的范围设置为provided,

spring-boot-starter-tomcat是Spring Boot默认就会配置的,即上面说到的内嵌tomcat,将其设置为provided是在打包时会将该包(依赖)排除,因为要放到独立的tomcat中运行,Spring Boot内嵌的Tomcat是不需要用到的。

以上就是简单的配置,但感觉没什么问题啊,为什么还是不能访问,最后发现是因为:

若打包成war包,放到tomcat下运行的话,则需要继承 org.springframework.boot.context.web.SpringBootServletInitializer类,覆盖其config(SpringApplicationBuilder)方法,

所以在application启动类同级中加入了下面的类

当然也可以在application中直接继承这个类,然后实现configure方法即可。

ServletInitializer是Servlet初始化器,意思是当本应用作为tomcat的一个webapp时,就调用configure函数,这是tomcat容器调用的,这时整个应用就相当于Servlet。 
当作为SpringApplication运行时,会执行main函数,但是不会执行上面的configure函数了。

建议 : 无论 jar 还是 war 都可以采用这种方式 !

以上是我遇到的问题,当然导致这种原因的也有其他的可能性,如果和我的配置不一样的话,那需要好好排查排查了~

参考资料https://docs.spring.io/spring-boot/docs/2.0.0.RELEASE/reference/htmlsingle/#howto-create-a-deployable-war-file

https://blog.csdn.net/hr787753/article/details/78562136

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值