spring Cloud Gateway 自定义过滤器时关于lambda写法的疑惑
浏览之前同事写的自定义过滤器时发现了一个使用lambda写法的代码

不理解(exchange, chain)这两个参数是在哪里定义,找了父类也没有发现对应的变量,进入lambda表达式查看执行类。

也没有发现是哪里来的这两个参数,回到自定义过滤器仔细观察,发现实际调用地点并不是自定义过滤器的位置,过滤器这里是返回了一个GatewayFilter的实体对象,也就是说这个lambda相当于做了一个接口实现类的实体创建逻辑,并将实体返回。跟换为匿名内部类的写法可能更好理解。

理解关键点:这里并没有使用到对象内部方法只是返回了一个对象,这个对象在实际使用调用方法时才会传入exchange, chain这两个参数。