前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot 常见配置注解使用:

SpringBoot 常见配置注解使用:

作者头像
Java_慈祥
发布2024-08-06 14:09:34
1170
发布2024-08-06 14:09:34
举报
文章被收录于专栏:Web前后端、全栈出发

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 使用!

代码语言:javascript
复制
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 的拦截路径

代码语言:javascript
复制
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才需要被它处理
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringBoot 配置注解解析
  • application.yml 常见配置:
    • server
      • server.servlet.context-path 应用上下文路径
      • server.servlet-path 拦截路径
    • spring
      • spring.profiles.active 解决多个生成环境 profiles 问题
  • SpringBoot 常见注解:
    • @validated
      • @Valid和@Validated 区别
    • @ControllerAdvice
      • @ExceptionHandler
      • Spring 常用注解:
      • 面试题:
        • server.servlet-path 和 server.servlet.context-path 区别:
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档