인프런 커뮤니티 질문&답변

parkht님의 프로필 이미지
parkht

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Spring Cloud Gateway - Custom Filter 적용 ➁

custom, global filter yaml파일이 아닌 자바 소스에 설정하는 방법 문의드립니다.

작성

·

444

1

안녕하세요. 먼저 좋은 강의 만들어주셔서 감사합니다.

덕분에 MSA, Spring Cloud에 대한 기초를 잘 잡아가고 있습니다.

제가 질문드리고자 하는 내용은

이번 강의에서 만든 CustomFilter, Global Filter 를 application.yml파일이 아닌 사전에 만들었던 FilterConfig.java에서 설정하는 방법입니다.

CustomFilter, , Global Filter를 빈으로 주입받은 후에 필터를 넣으려고 했는데 타입이 맞지 않는 메서드만 제공하고 있는 것 같아서요.

괜찮으시다면 소스 추가 부탁드립니다.

감사합니다.

답변 2

2

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다. 

FilterConfig에서 기존에 생성하셨던 Filter 클래스(CustomFiler, AuthorizationHeaderFilter 등)를 필터로 등록하실려면 아래와 같이 작업해 보시기 바랍니다. (gatewayRoute 메소드의 filter() 부분)

@Configuration
public class FilterConfig {
Environment env;

public FilterConfig(Environment env) {
this.env = env;
}

@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder, AuthorizationHeaderFilter myfilter) {

return builder.routes()
.route(r -> r.path("/first-service/**")
.filters(f -> f.addRequestHeader("first-request", "first-request-header")
.addResponseHeader("first-response", "first-response-header")
.filter(myfilter.apply(new AuthorizationHeaderFilter.Config())))
.uri("http://localhost:8081"))
.route(r -> r.path("/second-service/**")
.filters(f -> f.addRequestHeader("second-request", "second-request-header")
.addResponseHeader("second-response", "second-response-header"))
.uri("http://localhost:8082"))
.build();
}

}

https://www.inflearn.com/questions/351888

감사합니다. 

0

parkht님의 프로필 이미지
parkht
질문자

안녕하세요!! 답변 감사드립니다!!

혹시 Global pattern 에 경우는 path를 /**로 설정하면 될까요?.

parkht님의 프로필 이미지
parkht

작성한 질문수

질문하기