弹簧引导定义 bean 加载顺序



我有两个软件包:

com.example.commons
com.example.api

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

commons-module是一个单独的模块,它包含commons包,api-module是一个单独的模块,包含一个包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 的任何依赖项。

最新更新