SpringBoot 配置注解解析!
会不断更新! 一起学习呀!
application.yml 常见配置:
server
server.servlet.context-path 应用上下文路径
server.context-path 它代表的是应用上下文根
server.servlet.context-path=/wsm
- 例如我在 application.properties / yml
- 中配置了 server.servlet.context-path=/wsm ,那么我访问
该模块 服务端资源请求的时候就必须加上 /wsm
举例:
@RestController
public class SpringbootErrorController {
@RequestMapping("/hello")
public void error01() {
System.out.println("hello world");
}
}
例如: 你要访问到这个 Controller 中的 /hello 映射,那么你浏览器发起的请求就要是 http://localhost:8080/wsm/hello 取消注释则: http://localhost:8080/wsm/ww/hello
常见场景:
可以配合 Nginx 使用!
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;
}
}
上述Nginx 配置:
- 所有的请求中如果url中包含/market/task/的请求,都被分发到server 100.100.88.152:8097
ip和端口的服务器上 - 如果task模块配置了server.servlet.context-path= /market/task 那么task模块下的所有web接口url地址都必须加上 /market/task
- 那么在task模块下的web层所有接口都可以分发到server 100.100.88.152:8097上
- 不用考虑新增的Controller类上的路径和接口上定义的路径.
反之:
- 如果没有配置server.servlet.context-path,或者server.servlet.context-path配置的没有区别性, 那么ngnix就没有办法分发出去。
- 这样模块下web层每次新增一个Controller类,为了能够让ngnix正常分发,不报404错误,需要在ngnix上对类的url地址进行配置,这是一件很麻烦的事情。
server.servlet-path 拦截路径
server.servlet-path 它代表的是 DispatcherServlet 的拦截路径
server.servlet-path=/wsm
- DispatcherServlet 拦截路径就是 /wsm
即只有 /wsm 的请求可以通过! 其它请求都拦截!! - 但是我们配置 DispatcherServlet 都是使用默认的路径 / (拦截所有请求,不拦截 jsp)
貌似已经淘汰了!
spring
spring.profiles.active 解决多个生成环境 profiles 问题
常见注解:
面试题:
server.servlet-path 和 server.servlet.context-path 区别:
server.context-path设定应用的context-path
- 这个项目前缀,比如说配置成/Demo,那么访问路径就是ip:端口/Demo,没有配置的情况下是ip:端口/
server.servlet-path设定dispatcher servlet的监听路径,默认为: /
- 这个的意思是哪些访问路径需要被spring的dispatcher servlet处理,而你配置成/Demo的意思就是,只有/Demo才需要被它处理
|