Spring boot springboot定义bean加载的顺序

Spring boot springboot定义bean加载的顺序,spring-boot,Spring Boot,我有两个包裹: com.example.commons com.example.api com.example.api中定义的RestController组件取决于com.example.commons中定义的存储库 commons模块是包含commons包的独立模块,api模块是包含包api的独立模块 现在,当api开始执行时,spring不会加载之前在commons模块中定义的存储库,因此执行失败,因为api模块下包含的api包依赖于commons中的那些bean 以下是API模块开始执行

我有两个包裹:

com.example.commons
com.example.api
com.example.api中定义的RestController组件取决于com.example.commons中定义的存储库

commons模块是包含commons包的独立模块,api模块是包含包api的独立模块

现在,当api开始执行时,spring不会加载之前在commons模块中定义的存储库,因此执行失败,因为api模块下包含的api包依赖于commons中的那些bean

以下是API模块开始执行的方式:

@SpringBootApplication
@ComponentScan({"com.example.commons", "com.example.api"})
public class ApiMain {
    @Bean
    public BCryptPasswordEncoder bCryptPasswordEncoder() {
        return new BCryptPasswordEncoder();
    }

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

如何确保首先加载com.example.commons中的所有bean?

您可以使用@DependsOn注释。
这将确保,无论您注入它的bean的依赖项是什么,都会被创建。

我也这么认为。但是有几个类,这会使代码变得丑陋。有没有办法全局配置\@DependsOn或\@Conditional?当你说module时,它是不同的maven模块吗?@Sakalya是的,它是不同的maven模块