接口疑问的追问?
来源:16-6 登录token超时优化

慕神4535282
2020-11-04
老师,下午好,请教一个问题,
原贴在此:
https://coding.imooc.com/learn/questiondetail/210471.html
public class LoginAdminGatewayFilter implements GatewayFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
....
if (token == null || token.isEmpty()) {
LOG.info("token为空,请求被拦截");
exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
return exchange.getResponse().setComplete();
}
...
}
}
看了老师你的回答,我有个疑问:正如你之前告诉我的那样,LoginAdminGatewayFilter 只需要 implements 接口GatewayFilter, Ordered即可,不用手动写代码来调用filter()方法,因为这是写自定义过滤器的规范。而你在https://coding.imooc.com/learn/questiondetail/210471.html,所做的回答是:exchange.getResponse() 的返回值 是interface ServerHttpResponse,这个接口不用 implements ,只需调用接口内的方法即可。
可以看到,两种处理方法刚好相反。
所以我现在很困惑,对于一个interface, 不知道什么时候要用自定义过滤器的规范(只需implements,不用手动调用其方法)来处理,什么时候要用面向接口编程(不需implements,而需手动调用其方法)来处理。
谢谢老师解答!!!
写回答
1回答
-
没太明白的问题所在,说一下我的理解
LoginAdminGatewayFilter,这个是我们自己写的类,是要给框架用的,我们不需要关心框架是怎么用的,当然有兴趣的可以去研究源码。
而像Logger,是我们直接用框架提供的接口,而不需要关心他内部的实现,把它当成一个工具类。
两者没什么关联
012020-11-05
相似问题