spring boot 扫描不到controller

本文介绍了Spring Boot项目中遇到的Controller扫描问题及解决方案。当Controller不在启动类所在包及其子包下时,Spring Boot默认无法扫描到。文章提供了两种解决办法:一是调整组件位置;二是使用@ComponentScan注解指定要扫描的包。
部署运行你感兴趣的模型镜像

新进的公司用到springBoot、springCloud,回到家里赶紧补课

有个问题困扰了我近两个小时。

把controller放到springBootApplication类所在包的其他位置下,会扫描不到controller,查了资料

链接:https://www.cnblogs.com/shuoli/p/7676001.html

        https://www.cnblogs.com/oyx305/p/5512545.html

        http://blog.youkuaiyun.com/Fandly168/article/details/73302281

        https://www.cnblogs.com/oskyhg/p/6683629.html


解决方法:
1.将要用的组建放在启动类包下(不规范)
2.在启动类填加注解@ComponentScan或者@ComponentScans
例:

package test.demo.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan("controller")//包名
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
application.java也应该按照官方的建议放在root目录下,这样才能扫描到Service和dao,不然还会引起,扫描不到注解的问题。


您可能感兴趣的与本文相关的镜像

Qwen-Image-Edit-2509

Qwen-Image-Edit-2509

图片编辑
Qwen

Qwen-Image-Edit-2509 是阿里巴巴通义千问团队于2025年9月发布的最新图像编辑AI模型,主要支持多图编辑,包括“人物+人物”、“人物+商品”等组合玩法

### 解决Spring Boot Controller 不工作的问题 当遇到Spring Boot应用程序中的控制器(Controller)无法正常工作的状况时,有几种常见的原因和解决方案可以考虑。 #### 1. 控制器类未被扫描到 确保控制器所在的包及其子包已经被`@SpringBootApplication`注解所标注的启动类覆盖。如果控制器位于不同的模块或不在默认扫描路径下,则可能需要显式指定组件扫描的位置[^2]。 ```java @SpringBootApplication(scanBasePackages={"com.example.controller"}) public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` #### 2. 缺少必要的依赖库 确认项目中包含了构建Web应用所需的核心依赖项,比如`spring-boot-starter-web`。这可以通过Gradle配置文件来实现: ```gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' } ``` 对于Maven用户来说,应该在`pom.xml`里加入相应的依赖声明[^3]。 #### 3. 请求映射定义错误 检查控制器内的请求处理方法上是否有正确的HTTP动词(`GET`, `POST`)以及URL模式匹配。例如: ```java @RestController @RequestMapping("/api/v1") public class ExampleController { @GetMapping("/hello") public String sayHello() { return "Hello World!"; } } ``` 这里需要注意的是,`@RestController`是一个组合注解,它相当于同时使用了`@Controller`和`@ResponseBody`两个注解;而`@RequestMapping`用于设置基础路径,具体的端点由其下的具体方法通过如`@GetMapping`等进一步细化[^4]。 #### 4. 应用程序属性配置不当 有时问题也可能源于application.properties 或 application.yml 文件里的配置参数不正确。特别是涉及到服务器监听地址、端口或者其他网络相关设定的地方。确保这些值适合当前环境,并且不会与其他服务冲突。 #### 5. 日志级别过高掩盖异常信息 适当调整日志记录级别的高低可以帮助定位潜在的问题所在。较低的日志等级能够提供更多调试细节,在开发阶段建议暂时降低至DEBUG甚至TRACE级以便更好地观察内部运作情况。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值