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

Spring Boot跨模块Autowired:如何添加其他模块包至ComponentScan扫描范围

解决方案:跨模块组件扫描配置

嘿,这个场景其实挺常见的,咱们直接说怎么搞定:

你的主启动类在module2(包路径com.company.module2),Spring Boot默认只会扫描当前包及其子包下的组件,所以module1里的myRepository不在默认扫描范围内,必须显式把它的包路径加入扫描列表。

你可以直接在@SpringBootApplication注解里通过scanBasePackages参数指定所有需要扫描的包,把module1的包路径com.company.module1加进去就好,示例代码如下:

@SpringBootApplication(scanBasePackages = {"io.swagger", "com.company.module2", "com.company.module1"})
public class Module2Application { // 你的module2主启动类
    @Autowired
    private MyRepository myRepository; // 现在就能正常注入了

    public static void main(String[] args) {
        SpringApplication.run(Module2Application.class, args);
    }
}

额外提醒:

  • @SpringBootApplication本身就集成了@ComponentScan的功能,没必要额外单独加@ComponentScan注解,用scanBasePackages统一配置更简洁。
  • 如果myRepository是Spring Data系列的仓库(比如JPA仓库),要是发现还是扫不到,记得检查@EnableJpaRepositories的basePackages是否也包含了com.company.module1——不过一般来说,只要仓库接口标了@Repository,上面的scanBasePackages已经能覆盖到啦。

内容的提问来源于stack exchange,提问作者hamou amroun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:46:13