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模块