spring Cloud Gateway 自定义过滤器时关于lambda写法的疑惑
浏览之前同事写的自定义过滤器时发现了一个使用lambda写法的代码
![](https://oscimg.oschina.net/oscnet/up-b8c56c35b6385107f6327b5c2365fb5ed6d.png)
不理解(exchange, chain)这两个参数是在哪里定义,找了父类也没有发现对应的变量,进入lambda表达式查看执行类。
![](https://oscimg.oschina.net/oscnet/up-3d8f92326bc1ffe511b97bc5e48ea724050.png)
也没有发现是哪里来的这两个参数,回到自定义过滤器仔细观察,发现实际调用地点并不是自定义过滤器的位置,过滤器这里是返回了一个GatewayFilter的实体对象,也就是说这个lambda相当于做了一个接口实现类的实体创建逻辑,并将实体返回。跟换为匿名内部类的写法可能更好理解。
![](https://oscimg.oschina.net/oscnet/up-d8902bc525d2620b9e9601af0c248e05951.png)
理解关键点:这里并没有使用到对象内部方法只是返回了一个对象,这个对象在实际使用调用方法时才会传入exchange, chain这两个参数。