Java 将EmbeddedValueResolver与@Conditional一起使用
问题背景:在我们的应用程序中,我们使用自定义Java 将EmbeddedValueResolver与@Conditional一起使用,java,spring,spring-boot,Java,Spring,Spring Boot,问题背景:在我们的应用程序中,我们使用自定义propertysourcesplaceconfigurer来扩展带有自定义属性源的EmbeddedValueResolver的可能性。我对Spring Boot的@ConditionalOnProperty和@ConditionalOnExpression非常感兴趣,希望将其与自定义占位符一起使用 我想做的是编写自定义的@Conditional注释,该注释使用EmbeddedValueResolver解析占位符(${…})。我注意到Configura
propertysourcesplaceconfigurer
来扩展带有自定义属性源的EmbeddedValueResolver
的可能性。我对Spring Boot的@ConditionalOnProperty
和@ConditionalOnExpression
非常感兴趣,希望将其与自定义占位符一起使用
我想做的是编写自定义的@Conditional
注释,该注释使用EmbeddedValueResolver
解析占位符(${…}
)。我注意到ConfigurationClassPostProcessor
实现了ResourceLoaderAware
接口,ResourceLoaderAware
类的配置要晚于EmbeddedValueResolverAware
类。因此,当我们初始化ResourceLoaderWare
时,我们的EmbeddedValueResolverAware
bean已经配置好了。因此,潜在的解决方案似乎是可能的
接下来我想做的是编写自定义的条件
,它使用EmbeddedValueResolver
fromApplicationContext
解析某些属性并将其与某些值匹配。但是问题是,Condition
使用了另一个名为ConditionContext
的上下文类,它不包括EmbeddedValueResolver
。使用Environment#resolvePlaceholder
没有帮助-似乎Environment
对通过EmbeddedValueResolver
提供的占位符一无所知
那么,可以将
EmbeddedValueResolver
与Spring条件一起使用吗 您能提供一个具体的例子来说明您希望能够做什么吗?我希望能够使用占位符(可以通过@Value
注释获得,比如@Value(${auth.enabled}”)
)和条件,比如@ConditionalOnValue(${auth.enabled}”,“true”)
。