Spring Boot 的 Spring 集成配置

问题描述 投票:0回答:1

我尝试能够通过 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
文件。

仅供参考,我正在使用:

  • 春季启动:3.3.4
  • Spring 集成:6.3.4

有什么建议吗?

谢谢!

spring-boot spring-integration spring-autoconfiguration
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.