SpringBoot开发和部署路径冲突的妥协


1、使用SpringBoot2.x版本,在开发的时候不做多余配置,启动后直接ip:port/就是根路径了。但在tomcat中部署的时候如果存在多个项目,每个项目都用自己的名称,那么实际访问路径就是ip:port/项目名称/了。


2、如果没有其他引用,controller里的requestMapping也不需要添加任何项目前缀,开发和部署都能正常运行,完美。可是如果在html页面引用了静态文件,这个静态文件的路径应该怎么写呢?如果写成/css/index.css在本地测试可以但部署就不行。如果写成/项目名称/css/index.css效果正好相反。如果把路径最前面的/去掉那就更不可行了,因为通常这些引用是写在一个通用模块供所有页面导入的,去掉之后实际路径是随页面路径不同而不同的。


3、这只是静态文件引用路径问题,如果页面中有请求接口的代码的话,那么接口地址到底加不加项目名称前缀也很难兼顾开发和部署。


4、所以妥协的做法就是以部署环境为准,来做最少的配置变更,在开发和部署时只要变更这些配置即可。那么最少的配置变更到底是有多少呢?


5、第一,部署环境有项目名称,所以我们的静态文件路径和接口路径都添加/项目名称这样的前缀。第二,在配置文件中设置server.servlet.context-path=/项目名称。第三,在static目录下新建一个项目名称的目录,把原本在static下的所有静态文件拷贝一份到这个目录中,相当于两份静态文件一份给本地测试用,一份给部署时用。至此我们本地测试运行的话,就和部署时一致了。


6、那么部署时呢?部署时貌似可以不做任何变动。如果你勤快的话,上面第三步多出来的一份静态文件可以删除,如果还在测试中的话建议保留,这样开发和部署效率就会高一些。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值