我有一个微服务,它是在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不是正确的组合”
有什么建议可以实现这个目标吗??
1条答案
按热度按时间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。