Architecture/MSA
Spring Cloud Gateway - Configuration
체리필터
2021. 1. 7. 10:01
728x90
반응형
yml 파일에 기록한 config를 어떻게 적용 시키는지에 대한 내용으로 보임.
기본적으로 RouteDefinitionLocator 인터페이스를 구현한 PropertiesRouteDefinitionLocator 에서 Springboot의 기본 configure 로딩 방법인 @ConfigurationProperties 메카니즘에 의해 설정을 로딩하게 되어 있다.
매뉴얼에서는 Shortcut notation 방법과 이름 기반하의 설정이 동일하다고 말하고 있다.
spring:
cloud:
gateway:
routes:
- id: setstatus_route
uri: https://example.org
filters:
- name: SetStatus
args:
status: 401
- id: setstatusshortcut_route
uri: https://example.org
filters:
- SetStatus=401
해당 설정은 다음과 같은 방법으로 로드 되는 것으로 보인다.
package org.springframework.cloud.gateway.config;
import reactor.core.publisher.Flux;
import org.springframework.cloud.gateway.route.RouteDefinition;
import org.springframework.cloud.gateway.route.RouteDefinitionLocator;
/**
* @author Spencer Gibb
*/
public class PropertiesRouteDefinitionLocator implements RouteDefinitionLocator {
private final GatewayProperties properties;
public PropertiesRouteDefinitionLocator(GatewayProperties properties) {
this.properties = properties;
}
@Override
public Flux<RouteDefinition> getRouteDefinitions() {
return Flux.fromIterable(this.properties.getRoutes());
}
}
PropertiesRouteDefinitionLocator 생성자는 org.springframework.cloud.gateway.config.GatewayAutoConfiguration.java 에서 호출하고 있음.
@Bean
@ConditionalOnMissingBean
public PropertiesRouteDefinitionLocator propertiesRouteDefinitionLocator(
GatewayProperties properties) {
return new PropertiesRouteDefinitionLocator(properties);
}
728x90
반응형