问题上下文:在我们的应用程序中,我们使用自定义PropertySourcesPlaceholderConfigurer
来扩展EmbeddedValueResolver
与自定义属性源的可能性。我对Spring Boot @ConditionalOnProperty
和@ConditionalOnExpression
非常感兴趣,并希望将它与自定义占位符一起使用。
我想要做的是编写自定义@Conditional
注释,使用EmbeddedValueResolver
来解析占位符(${...}
)。我注意到ConfigurationClassPostProcessor
实现了ResourceLoaderAware
接口,而ResourceLoaderAware
类的配置晚于EmbeddedValueResolverAware
。因此,当我们初始化ResourceLoaderAware
时,我们的EmbeddedValueResolverAware
bean已经配置好了。所以潜在的解决方案似乎成
我接下来要做的是编写自定义Condition
,使用EmbeddedValueResolver
中的ApplicationContext
来解析某些属性并将其与某个值匹配。但问题是Condition
使用另一个名为ConditionContext
的上下文类,它不包含EmbeddedValueResolver
。使用Environment#resolvePlaceholder
没有帮助 - 似乎Environment
对通过EmbeddedValueResolver
提供的占位符一无所知。
那么,是否可以将EmbeddedValueResolver
用于Spring条件?