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

网友评论