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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sunhongbing1024/article/details/82285749

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

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

猜你喜欢

转载自blog.csdn.net/sunhongbing1024/article/details/82285749