Spring Boot 应用中server.context-path的作用

定义: server.context-path= # Context path of the application. 应用的上下文路径,也可以称为项目路径,是构成url地址的一部分。

在每个module的application.properties文件都可以配置server.context-path这个属性。开始使用spring boot的时候没有注意这个属性,其实默认可以不配置,直接在controller层通过@RequestMapping来设定url的地址路径。

@RestController
@RequestMapping("/mqcp")
public class MQCPContorller {
@Autowired
MQCPServiceImpl mqcpService;

@RequestMapping("/convert")
public String convert(){
mqcpService.convert();
return "ok";
}
}

如果server.context-path没有配,请求的url地址就是 localhost : port/mqcp/convert
如果server.context-path = “/market/task”, 请求的url地址就是 localhost : port/market/task/mqcp/convert
在 task这个模块下的所有web层的url地址都需要添加server.context-path。

server.context-path 在ngnix分发中的作用

ngnix 分发的时候 server.context-path 起到了很重要的作用,并且如果server.context-path 值没有写规范也会导致挖出一个巨大的坑。

下面是ngnix的部分配置文件

upstream task{
server 100.100.88.152:8097;
check interval=30000 rise=2 fall=3 timeout=1000 type=http;
check_http_send "GET /market/task/turnTask HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
server {
location /market/task/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://task;
}
}

实现的功能是所有的请求中如果url中包含/market/task/的请求,都被分发到server 100.100.88.152:8097,这个ip和端口的服务器上。
很明显,如果task模块配置了server.context-path= /market/task 那么task模块下的所有web接口url地址都必须加上 /market/task, 那么在task模块下的web层所有接口都可以分发到server 100.100.88.152:8097上,不用考虑新增的Controller类上的路径和接口上定义的路径。

反之,如果没有配置server.context-path,或者server.context-path配置的没有区别性,比方说配置为 /market ,无法和其他模块区分开来,那么ngnix就没有办法分发出去。 这样模块下web层每次新增一个Controller类,为了能够让ngnix正常分发,不报404错误,需要在ngnix上对类的url地址进行配置,这是一件很麻烦的事情。所以server.context-path的规范配置很关键。
---------------------
作者:bo_bo_style
来源:CSDN
原文:https://blog.csdn.net/onedaycbfly/article/details/80108129

原文地址:https://www.cnblogs.com/pan-4957/p/11126502.html

时间: 2024-07-29 06:26:44

Spring Boot 应用中server.context-path的作用的相关文章

Spring Boot项目中使用Mockito

本文首发于个人网站:Spring Boot项目中使用Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试:Spring Boot可以跟BDD(Behavier Driven Development)工具.Cucumber和Spock协同工作,对应用程序进行测试. 进行软件开发的时候,我们会写很多代码,不过,再过六个月(甚至一年以上)你知道自己的代码怎么运作么?通过测试(单元测试.集成测试.接口测试)可

Spring Boot项目中如何定制拦截器

本文首发于个人网站:Spring Boot项目中如何定制拦截器 Servlet 过滤器属于Servlet API,和Spring关系不大.除了使用过滤器包装web请求,Spring MVC还提供HandlerInterceptor(拦截器)工具.根据文档,HandlerInterceptor的功能跟过滤器类似,但拦截器提供更精细的控制能力:在request被响应之前.request被响应之后.视图渲染之前以及request全部结束之后.我们不能通过拦截器修改request内容,但是可以通过抛出异

spring boot Controller中使用注解@RequestBody遇到的一个问题

spring boot Controller中使用注解@RequestBody遇到的一个问题总结: 通过@RequestBody接收实体对象,如代码所示 @PostMapping(value = "addtype")public Object addAppType(@RequestBody AppType appType) throws Exception{ return JsonData.buildSuccess();} 用postman测试接口时, 首先选择post请求 然后Hea

Spring Boot 项目中使用JSP

1    第2-2课:Spring Boot 项目中使用JSP JSP(Java Server Pages,Java 服务器页面)是一个简化的 Servlet 设计,它是由 Sun Microsystems 公司倡导.许多公司参与一起建立的一种动态网页技术标准.JSP 技术类似 ASP 技术,它是在传统的网页 HTML(标准通用标记语言的子集)文件(.html)中插入 Java 程序段(Scriptlet)和 JSP 标记(tag),从而形成 JSP 文件,后缀名为(*.jsp).用 JSP 开

在Spring Boot项目中使用Spock测试框架

摘自:https://www.cnblogs.com/javaadu/p/11748473.html 本文首发于个人网站:在Spring Boot项目中使用Spock测试框架 Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring Boot项目中使用该框架写优雅.高效以及DSL化的测试用例.Spock通过@RunWith注解与JUnit框架协同使用,另外,Spock也可以和Mockito(Spring Boot应用的测试——Mockito

spring boot配置文件中 spring.mvc.static-path-pattern 配置项

spring boot项目中的静态资源文件存放在static文件下面,当通过浏览器访问这些静态文件时,发现必须要添加static作为前缀才能访问,折腾了一番后发现,这个前缀跟 spring.mvc.static-path-pattern 这个配置项有关. spring: mvc: static-path-pattern: /static/** 项目中application.yml配置文件中,存在如上配置项时,访问静态资源文件要加static才行,当把这个配置项除掉时,不用加static作为前缀亦

Spring Boot 2中对于CORS跨域访问的快速支持

原文:https://www.jianshu.com/p/840b4f83c3b5 目前的程序开发,大部分都采用前后台分离.这样一来,就都会碰到跨域资源共享CORS的问题.Spring Boot 2 对此提供了很好的解决方法. 更多CORS介绍,请看这里: CORS介绍 1.注解实现 在Spring Boot 2中,提供了注解的方式来对CORS跨域访问进行支持. 1.1 在方法上注解 可以将@CrossOrigin注解在方法上.这样该方法可以被跨域访问. 在方法上标注 1.2 在Controll

在Spring Boot项目中使用Redis集群

Redis安装 Mac 系统安装Redis brew方式安装 在命令汗执行命令 brew install redis 安装完成之后的提示信息 ==> Downloading https://homebrew.bintray.com/bottles/redis-5.0.2.mojave.bottle.tar.gz ######################################################################## 100.0% ==> Pouring

Spring Boot项目中如何定制PropertyEditors

本文首发于个人网站:Spring Boot项目中如何定制PropertyEditors 在Spring Boot: 定制HTTP消息转换器一文中我们学习了如何配置消息转换器用于HTTP请求和响应数据,实际上,在一次请求的完成过程中还发生了其他的转换,我们这次关注将参数转换成多种类型的对象,如:字符串转换成Date对象或字符串转换成Integer对象. 在编写控制器中的action方法时,Spring允许我们使用具体的数据类型定义函数签名,这是通过PropertyEditor实现的.Propert