728x90
공통적으로 적용시킬 때 사용하는 Filter이다.
가장 처음에 시작이 되고, 가장 마지막에 종료된다
Pre 같은 경우 CustomFilter보다 먼저 실행되고, Post 같은 경우 CustomFilter보다 늦게 종료된다.
GlobalFilter
@Component
@Slf4j
public class GlobalFilter extends AbstractGatewayFilterFactory<GlobalFilter.Config> { // 해당 Factory를 구현해야한다.
public GlobalFilter(){
super(Config.class);
}
@Override
public GatewayFilter apply(Config config) {
return ((exchange, chain) ->{
//Global Pre Filter
ServerHttpRequest request = exchange.getRequest();
ServerHttpResponse response = exchange.getResponse();
log.info("Global PRE Filter baseMessage: {}", config.getBaseMessage());
if(config.isPreLogger()){
log.info("Global Filter Start: request id -> {}", request.getId());
}
//Global Post Filter
return chain.filter(exchange).then(Mono.fromRunnable(()->{
if(config.isPostLogger()){
log.info("Global Filter End: response id -> {}", response.getStatusCode());
}
}));
});
}
@Data
public static class Config{
//Configure 정보를 입력한다.
private String baseMessage;
private boolean preLogger;
private boolean postLogger;
}
}
- Config 정보에 따라 Log를 찍거나 안 찍거나 할 수 있다.
applictaion.yml
cloud:
gateway:
default-filters:
- name: GlobalFilter
args: #이러한 값을 타이핑 해서 사용하게 되면, 수정시 다시 빌드, 베포 과정이 필요하기 떄문에 외부에서 입력받게끔 해야 좋은 방식이다
baseMessage: Spring Cloud Gateway Global Filter
preLogger: true
postLogger: true
- 해당 부분을 추가하여 Global Filter를 적용시킨다.
- yml파일을 통해 baseMessage, preLogger, postLogger값을 입력받게 된다
- 좋지 않은 방법이다(후에 해당 파일을 수정 시 빌드, 베포 과정을 다시 해야 되기 때문에, 해당 값을 입력받는 것이 코드밖에 있어야 한다)

728x90
'Spring Cloud로 개발하는 MSA > API Gateway Service' 카테고리의 다른 글
| Spring Cloud Gateway - Load Balancer (0) | 2022.05.03 |
|---|---|
| Spring Cloud Gateway - Logging Filter (0) | 2022.05.03 |
| Spring Cloud Gateway - Custom Filter 적용 (0) | 2022.05.03 |
| Spring Cloud Gateway - Filter 적용 (0) | 2022.05.03 |
| Spring Cloud Gateway - 프로젝트 생성 (0) | 2022.05.03 |