springBoot 指定自动扫描路劲

本文详细阐述了如何在SpringBoot项目中调整扫描路径,以便访问位于com.example.controller的控制器类。通过修改启动类配置或使用@ComponentScan注解,解决了自动扫描默认路径的问题,使localhost:8080/test能够正常访问。

如下图所示,springboot项目结构如下:

其中主类为DemoApplication,controller放在 com.example.controller下面

TestCtr 代码如下:

@RestController
public class TestCtr {

    @GetMapping("/test")
    public String test(@RequestParam(value = "name", defaultValue = "World") String name) {
        return String.format("test  %s!", name);
    }
}

 启动springBoot后,通过localhost:8080/test  无法访问到该controller类,原因是由于,springboot中的自动配置,将启动类作为了自动扫描的路径。因此我们需要自己自定包自动扫描的路径到上级目录。

通过在主类 中添加配置:

@SpringBootApplication(scanBasePackages = "com.example")

再次重新启动,即可访问

或者,我们点击进入@SpringBootApplication 注解的实现类,复制实现类里面的合成注解,通过@ComponentScan指定包扫描路劲,如下:

//@SpringBootApplication(scanBasePackages = "com.example")
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.example")
@RestController

重新启动springBoot,同样可以访问该controller。

Spring Boot 应用程序中,获取由中的 ID 参数主要通过 `@PathVariable` 注解实现。该注解用于从请求的 URL 路径中提取参数值,并将其绑定到方法参数上。 当定义 RESTful 风格的接口时,路径参数通常嵌入在 URL 中作为资源标识符。例如,在 `/users/{id}` 这样的路径中,`{id}` 是一个路径变量,表示用户资源的唯一标识。通过 `@PathVariable` 注解可以将这个变量值直接注入到控制器方法的参数中[^1]。 ### 获取路径参数的基本方式 以下是一个典型的示例,展示如何在 `@GetMapping` 中使用 `@PathVariable` 来获取路径中的 ID: ```java @RestController @RequestMapping("/users") public class UserController { @GetMapping("/{id}") public String getUserById(@PathVariable Integer id) { return "User ID: " + id; } } ``` 上述代码中,当访问 `/users/123` 时,`id` 参数会被赋值为 `123`,并返回对应的用户信息[^3]。 ### 自定义参数名称映射 如果路径变量名与方法参数名不一致,可以通过 `@PathVariable("id")` 显式指定变量名进行映射: ```java @GetMapping("/{id}") public String getUserDetail(@PathVariable("id") Integer userId) { return "User Detail ID: " + userId; } ``` 这种方式确保即使方法参数名不同,也能正确匹配 URL 中的路径参数[^4]。 ### 同时获取多个路径参数 Spring Boot 也支持在一个请求中提取多个路径参数。只需在 URL 模板中定义多个占位符,并在方法参数中分别使用 `@PathVariable` 注解即可: ```java @GetMapping("/{userId}/{bookId}") public String getUserBookInfo(@PathVariable Integer userId, @PathVariable Integer bookId) { return "User ID: " + userId + ", Book ID: " + bookId; } ``` 此方法适用于需要同时处理多个资源 ID 的场景,如查询某个用户借阅的某本书籍信息等[^5]。 ### 获取所有路径参数 若希望一次性获取所有路径变量,可以使用 `Map` 类型的参数配合 `@PathVariable`: ```java @GetMapping("/{id}/{name}") public Map<String, Object> getParams(@PathVariable Map<String, String> pathVariables) { Map<String, Object> result = new HashMap<>(); result.putAll(pathVariables); return result; } ``` 当访问 `/users/123/john` 时,该方法会返回包含 `"id"` 和 `"name"` 键值对的结果。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值