Spring 引导 - 仅当 属性 启用时才加载 bean

Spring Boot - Load bean only if it is enabled by a property

我有一个 Spring 引导应用程序,其中包含不同的子模块,其中还包含 spring 组件。 在主 Web 模块中,我使用了子模块中 70% 的 bean。这取决于 application.yml 属性,是否启用 属性 组(指向一个 bean)。

首先我想创建 Aspect-s,因此当调用 bean 的方法(属性 未启用)时,抛出异常。此解决方案可行,但随后我需要创建方面 类、方法注释、导入越来越多的依赖项。

所以我只是想知道,是否有任何其他更简单的解决方案来禁用 bean,或者根本不加载到 spring 引导容器?

我会想象像 @DependsOn 这样的东西,但是为此你需要给一个 bean 名称的名称,但是你不能使用这个注释来处理 yml 属性.

其他简单的解决方案是 @Bean@Import 我想由 spring 容器管理的每个 bean,而不是 @Import 子模块中的所有内容,但随后它是静态设置,不能被 yml.

中的单个 属性 覆盖

Spring介绍了可以使用的concept of conditionals quite some time ago. Spring Boot uses this to a great extend to conditionally enable features. It even created a lot of conditional rules

其中一个规则是 以 属性 规则为条件。要使用此规则,请将 @ConditionalOnProperty 注释添加到您的 bean。现在只有在 属性 启用或具有特定值时才会包含它。

@ConditionalOnProperty(name="your.property.name")