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
반응형