spring - 仅当属性值不是固定值时如何加载 bean
问题描述
我面临这样一种情况,只有当属性包含除特定值之外的任何其他值时,应用程序上下文才应创建 bean。即..一个属性file.path= /specific/path
,如果值不是这个,那么应该加载bean。
我可以看到@ConditionalOnProperty (name="file.path", havingValue="....")
开箱即用,但在我的情况下,我正在寻找类似havingValueOtherThan="..."
或类似类型的属性或注释,如果它在春季开箱即用。
解决方案
除了评论中说明的配置文件外,还有许多可能的选项,这里有 2 个选项:
选项1
@ConditionalOnExpression
与您希望的任何 SPeL 表达式一起使用
选项 2
您始终可以使用任何逻辑创建自己的条件注释:
创建一个注释来描述您自己的业务案例,并@Conditional
在上面添加一个。然后实现您选择的条件逻辑。这是实现此目的的示例。
顺便说一句,评论中提到的配置文件在后台使用 Conditionals 引擎(自 Spring 4.x 以来,@Profile
注释的定义中有一个)@Conditional({ProfileCondition.class})