如果应用程序中存在配置组合,如何使kotlin spring boot app失败yaml

ldfqzlk8  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(353)

我有一个微服务,它是在kotlin的spring云网关实现。因此,作为功能的一部分,如果在application.yaml中的筛选器配置中发现特定的参数组合,则需要使此服务的启动失败。为了给出过滤器配置,我们使用了内联表示法。例如:

spring:
  cloud:
    gateway:
      routes:
        - id: test1
          predicates:
            - Path=/test1/**
          filters:
            - RewritePath=/test1/(?<segment>.*), /$\{segment}
            - TLS= OPTIONAL, NONE, TEST
        - id: test2
          predicates:
            - Path=/test2/**
          filters:
            - RewritePath=/test2/(?<segment>.*), /$\{segment}
            - TLS= MANDATORY, NONE, TEST

所以在这个示例配置中,tls filter将ags组合设为带none的mandatory,那么在这种情况下,这个服务应该在开始时失败,并说“带none的mandatory不是正确的组合”
有什么建议可以实现这个目标吗??

des4xlb0

des4xlb01#

实现这一点的一种方法是创建applicationeventlistener。基本上,您可以注册其中一个侦听器来侦听spring引导事件:(其中之一:https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/event/package-summary.html)
您可以在这里看到一个示例实现: https://stackoverflow.com/questions/56372260/spring-load-application-properties-in-application-listener . 在该示例中,正在加载属性。在您的例子中,我认为您可以检查您感兴趣的属性,如果有任何内容违反您的要求,则抛出runtimeexception。

相关问题