我尝试能够通过 Spring Boot 的 第三方配置 机制配置 Spring Integration 默认值。
我已经尝试过:
@Configuration
@EnableIntegration
class IntegrationFlowConfigration {
...
// @Primary to hopefully take precedence
@Primary
// The name could also be set to IntegrationContextUtils.INTEGRATION_GLOBAL_PROPERTIES_BEAN_NAME
@Bean(name = {"integrationGlobalProperties"})
// Ideally, I'd use IntegrationProperties.INTEGRATION_PROPERTIES_PREFIX, but it ends with '.'
@ConfigurationProperties(prefix = "spring.integration")
static IntegrationProperties integrationGlobalProperties() {
return new IntegrationProperties();
}
...
}
通过这种方式,我可以在
spring.integration
文件中创建 application.yaml
部分,其中指定了所有其余的 Spring Boot 属性。
但是,我的
application.yaml
文件中的这些属性被完全忽略。
允许配置默认值的唯一机制似乎是创建一个
META-INF/spring.integration.properties
文件。
仅供参考,我正在使用:
有什么建议吗?
谢谢!
Spring Integration 在 Spring Boot 中提供了自动配置功能。并且确实针对
org.springframework.boot.autoconfigure.integration.IntegrationProperties
前缀为我们配置了 spring.integration
:https://docs.spring.io/spring-boot/appendix/application-properties/index.html#application-properties.integration.spring。 Integration.channel.自动创建.
因此没有必要尝试将其作为第三方来处理,因为我们只有一个。
看起来这正是您的经验所证实的。该
META-INF/spring.integration.properties
由 Spring Boot 中的 IntegrationPropertiesEnvironmentPostProcessor
读取并填充到 org.springframework.boot.autoconfigure.integration.IntegrationProperties
。
虽然您的
integrationGlobalProperties
没有执行任何操作,因为这些 spring.integration
道具无法正确映射到 org.springframework.integration.context.IntegrationProperties
。