解决 Spring Boot 多模块下启动类以外的模块 Bean 无法被装载的问题,你可以尝试以下方法
- 组件扫描:在 Spring Boot 的主应用类上标记 @ComponentScan 注解,并增加你的模块路径。
@SpringBootApplication
@ComponentScan(basePackages = {"com.example.module1", "com.example.module2"})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
在这个例子中,Spring Boot 将会扫描 “com.example.module1” 和 “com.example.module2” 这两个包及其子包下的所有类,并尝试创建 Bean。
- 导入 Configuration:通过 @Import 注解直接将配置类加载到 Spring Boot 应用中。
@SpringBootApplication
@Import({Module1Configuration.class, Module2Configuration.class})//Module1Configuration、Module2Configuration不在启动类当前包和及其子包下,故可以使用Import倒入,或者使用@ComponentScan指定包扫描路径
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
在这个例子中,Module1Configuration 和 Module2Configuration 这两个配置类将会被导入,并且它们中定义的 Bean 将会被创建。
- 检查Maven的配置:如果你使用 Maven 来构建项目,你需要确保在父项目的 pom.xml 文件中正确地包含了所有的子模块。例如:
<modules>
<module>module1</module>
<module>module2</module>
</modules>
在这个例子中,module1 和 module2 这两个模块将会被 Maven 构建,并且它们中定义的 Bean 将会被创建。