全局处理异常以及日志,通过函数式参数对行为解耦
描述:在我们平时的微服务开发中,调用其他服务的接口,通常要把接口调用部分做异常处理(try catch),或者打印异常日志或者结果日志,并且也有可能做一些统一的调用处理,比如微服务接口熔断等处理,这个时候可以适用函数式接口收拢所有的微服务调用集中处理
TestController2
@RequestMapping(value = "/listByVin", method = RequestMethod.GET) public String listByType(@RequestParam(value = "vin") String vin) { //正常写法 try { return testService2.handler1(vin); }catch (Exception e){ e.printStackTrace(); } //函数式写法 return ServerExeutor.executeAndReturn(() -> testService2.handler1(vin)); } @RequestMapping(value = "/listByVin2", method = RequestMethod.GET) public String listByVin2(@RequestParam(value = "vin") String vin,@RequestParam(value = "status") Short status) { //正常写法 try { testService2.handler2(vin,status); }catch (Exception e){ e.printStackTrace(); } //函数式写法 ServerExeutor.execute(() -> testService2.handler2(vin,status)); return "执行不带参函数完成"; }
ServerExeutor
public class ServerExeutor { public static void execute(Runnable runnable){ try { runnable.run(); }catch (Exception e){ e.printStackTrace(); } } public static String executeAndReturn(Callable<String> callable){ try { return callable.call(); }catch (Exception e){ e.printStackTrace(); } return null; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?