SpringBoot 配置注解解析
会不断更新! 一起学习呀!
application.yml 常见配置:
server
server.servlet.context-path
应用上下文路径
server.context-path 它代表的是应用上下文根
代码语言:javascript复制server.servlet.context-path=/wsm
- 例如我在 application.properties / yml
- 中配置了 server.servlet.context-path=/wsm ,那么我访问**
该模块
**服务端资源请求的时候就必须加上/wsm
举例:
代码语言:javascript复制@RestController
//@RequestMapping("/ww")
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.0rnrn";
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 问题
SpringBoot 常见注解:
@validated
解释 @validated
之前,先要了解 @valid
- @valid 是Java种对数据校验的注解,
配合JSR303 实现前后端交互
了解 随着,前后端分离JSP的没落,Spring表单,也不在使用,但JSR303 后台数据校验还是很流行的
- @validated
Spring 是针对Java开发的一个整合框架!,可以理解是对
@valid
的一个增强,是Spring使用**JSR303
**的注解! - 在检验Controller的入参是否符合规范时 使用@Validated或者@Valid在基本验证功能上没有太多区别。但是在分组、注解地方、嵌套验证等功能上两个有所不同:
@Valid和@Validated 区别
@Valid
- 是Java的注解
可以用在方法、构造函数、方法参数和成员属性(字段)上
@Valid可以实现嵌套验证,**
@Validated没有需要使用@Valid 实现!
**
@Validated
- 是Spring的注解 可以用在类型、方法和方法参数上。但是不能用在成员属性(字段)上 比@Valid 多了分组的功能!
都是对JSR303 数据校验的使用,本质上没啥区别~ 学习使用
@ControllerAdvice
@ExceptionHandler
Spring 常用注解:
面试题:
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才需要被它处理