分析@GetMapping(“/{configKey}“) querySysConfigValue(@PathVariable @NotBlank String configKey) {

代码示例

    /**
     * 查询配置值
     *
     * @param configKey 配置键
     * @return 配置值 {@link Result}<{@link String}>
     */
    @GetMapping("/{configKey}")
    @LogDetail("查询配置值")
    public Result<String> querySysConfigValue(@PathVariable @NotBlank String configKey) {
        String configValue = sysConfigService.querySysConfigValue(configKey);
        return Result.success(configValue);
    }

✅ 如果 configKey 为 null,根本不会进入这个方法

因为 @PathVariable 是 路径变量,不是查询参数。它的值来自 URL 路径的一部分,不是可选的请求体参数。


🔍 各种情况分析

请求 URL是否进入方法configKey 值结果
GET /configs/app.name✅ 进入"app.name"正常处理
GET /configs/❌ 404不进入方法路径不匹配,Spring 返回 404
GET /configs(无斜杠)❌ 404不进入方法路径不匹配
GET /configs/%20✅ 进入" "(纯空格)@NotBlank 拦截,返回 400
GET /configs/(路径变量为空)❌ 404不进入方法空路径段匹配不上

📌 为什么 configKey 不会为 null

  1. 路径匹配机制:Spring 只有在 URL 路径完全匹配 /{configKey} 时才会调用该方法。如果 configKey 这个段缺失,路径不匹配,直接返回 404。

  2. @PathVariable 默认是 required:即使没有显式指定 required=true,它也是必需的,因为路径中必须包含这个段才能匹配。

  3. null 不存在于 URL 路径中:HTTP 路径中无法传递 null 值。null 是 Java 语言的概念,URL 中不存在。


✅ 结论

问题答案
configKey 会为 null 吗?❌ 不会。如果路径变量缺失,方法根本不会被调用。
@NotBlank 还有必要吗?✅ 有必要。它能拦截 空字符串 或 纯空格(如 /configs/%20),防止无效查询进入 Service 层。

所以 configKey 永远不会是 null,但 @NotBlank 仍然有效,用于拦截空字符串。 🎯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值