首页 > 解决方案 > 仅当属性值不是固定值时如何加载 bean

问题描述

我面临这样一种情况,只有当属性包含除特定值之外的任何其他值时,应用程序上下文才应创建 bean。即..一个属性file.path= /specific/path,如果值不是这个,那么应该加载bean。

我可以看到@ConditionalOnProperty (name="file.path", havingValue="....")开箱即用,但在我的情况下,我正在寻找类似havingValueOtherThan="..."或类似类型的属性或注释,如果它在春季开箱即用。

标签: springspring-boot

解决方案


除了评论中说明的配置文件外,还有许多可能的选项,这里有 2 个选项:

选项1

@ConditionalOnExpression与您希望的任何 SPeL 表达式一起使用

选项 2

您始终可以使用任何逻辑创建自己的条件注释:

创建一个注释来描述您自己的业务案例,并@Conditional在上面添加一个。然后实现您选择的条件逻辑。是实现此目的的示例。

顺便说一句,评论中提到的配置文件在后台使用 Conditionals 引擎(自 Spring 4.x 以来,@Profile注释的定义中有一个)@Conditional({ProfileCondition.class})


推荐阅读