You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Spring Boot Starter中REST端点无法访问问题咨询

问题解答

首先明确:完全可以将REST端点拆分到自定义Spring Boot Starter中,你的404问题核心原因是控制器类未被Spring容器注册。

问题分析

你的配置类MyRestAutoConfiguration虽然被正确加载,但它是空实现——@ConditionalOnClass仅用来判断MyController类是否存在于classpath中,并不会自动将该控制器注册为Spring Bean。没有被容器管理的控制器,自然无法处理请求,导致404。

解决方案

你可以通过以下两种可靠方式修复:

方式1:在自动配置类中显式注册控制器Bean

修改MyRestAutoConfiguration,手动创建并注册MyController实例:

@Configuration
@ConditionalOnClass(MyController.class)
public class MyRestAutoConfiguration {

    @Bean
    public MyController myController() {
        return new MyController();
    }
}

方式2:通过组件扫描注册控制器

如果你的Starter中有多个组件需要注册,可以在配置类上添加@ComponentScan,指定控制器所在的包路径:

@Configuration
@ConditionalOnClass(MyController.class)
@ComponentScan(basePackages = "com.your.starter.controller") // 替换为实际包路径
public class MyRestAutoConfiguration {
}

注意:建议指定精确的包路径,避免扫描到Starter外的无关组件。

验证步骤

  1. 重新打包自定义Starter,更新主应用的依赖
  2. 启动主应用后,可通过以下方式验证端点是否注册:
    • 开启Spring Boot Actuator,访问/actuator/mappings查看所有注册的端点映射
    • 用curl或浏览器访问/foo,应返回"bar"

额外注意事项

  • 确保主应用的依赖中正确引入了自定义Starter,且依赖范围为compile或runtime
  • 避免依赖主应用的组件扫描路径(比如主应用启动类的@SpringBootApplication扫描范围),通过自动配置类显式注册Bean是Starter的最佳实践,能保证兼容性

内容的提问来源于stack exchange,提问作者Tonny Tc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:03:36