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")
我有一个 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")