我有以下代码:
mySvc
.getItem() -> returns Mono<Optional<Item>>
.map(Optional::get)
.switchIfEmpty(...)
如果未找到该项,则该服务将返回 Optional.null。它确实调用了switchIfEmpty(),它返回一个异常,但随后它仍然去调用.map()并崩溃(NPE)。
但是如果我这样做了:
mySvc
.getItem() -> returns Mono<Optional<Item>>
.filter(Optional::isPresent)
.map(Optional::get)
.switchIfEmpty(...)
然后它按预期工作,只调用switchIfEmpty()。我可以发誓,在没有过滤器的情况下,这在某个时候是可行的。
SwitchedIf空()应该让执行继续进行吗?
编辑:
Controller:
Mono<Item> get(id)
return mysvc.getitem(id)
.switchifempty(return 404 exception)
Service:
Mono<Item> get(id)
return asyncCache.getMap()
.map(theMap -> theMap.getItem(id))
在服务层中,如果未找到,则 theMap.getItem(id)(即哈希映射)将返回 null。
第二版:
模拟
hm.put(1, 2);
hm.put(2, 4);
return Mono.just(hm)
.map(hm1 -> hm1.get(3));
您似乎是在将Mono#SwitchIfClear ty
混为一谈,如果Mono是Mono.empty()
,它会触发Java的可选;这两个是完全分开的。您的map
无条件地调用可选#get
,如果为空,则会抛出。
由于存在语义重叠,因此可以使用方便的方法。尝试:
Mono.justOrEmpty(mySvc.getItem()) // If this call returns an Optional<Item>
.switchIfEmpty(...)
如果服务已经返回了< code >单声道
mySvc.getItem()
.flatMap(Mono::justOrEmpty)
.switchIfEmpty()
当客户端发出请求时,“MonoJust”会打印在第4行,但“test”会在Http响应正文中返回。我知道发布者在订阅之前不会生成数据,那么为什么Http响应包含“test”而不是“MonoJust”?
我目前正在使用自定义JWT身份验证进行SpringCloudGateway。身份验证后,我希望使用GlobalFilter将标头中的JWT令牌字符串传递到下游服务: JWT令牌字符串可以通过调用主体来获得。getName(); 我的问题是:我如何实现
问题内容: 我一直在挣扎着我的第一个正则表达式。在编译,并不断得到错误。 我只是更改为,它的工作就像一个梦。 我的印象是,荷兰国际集团将 同时 在带来等等那是不是这样的?我找不到解决此特定问题的任何文档。 问题答案: 是的,这就是Java中包导入的工作方式(应该如此)。例如,doing 将导入所有 类 ,但 不 导入子包及其类。 人机工程学,将 不会 导入或 阅读以下博客,获得一些友好的新手建议。
简介 Charles是Mac下常用的对网络流量进行分析的工具,类似于Windows下的Fiddler。在开发iOS程序的时候,往往需要调试客户端和服务器的API接口,这个时候就可以用Charles,Charles能够拦截SSL请求、模拟慢速网络、支持修改网络请求包并多次发送、能够篡改Request和Response等强大的功能。下面介绍安装和使用方法。 下载安装 可以从这里下载Charles,有3
我已经尝试了一段时间让smoothScrollToPositionFromTop()工作,但它并不总是滚动到正确的位置。 我有一个ListView(有10个条目)的布局,边上有10个按钮,所以我可以滚动到列表中的每个条目。通常,当我向后或向前滚动一个位置时,效果很好,但是当我试图向后或向前滚动超过3个位置时,ListView并不完全在所选位置结束。当它失败时,它通常会减少0.5到1.5个项目,并且
问题内容: 我可以在Java监视程序上创建网络流量吗?该程序必须控制从计算机程序(包括OS模块)到网络驱动程序再返回的所有网络流量。如果是,如何? 注意: 我不仅要监视流量,还要对其进行控制。我想在Windows NT上实现这样的系统。仅靠Java无法实现它。如何在JNI的帮助下执行它? 也许是另一个变体。我不熟悉Windows服务,但仍然如此。我将在C 上编写一个程序并将其注册为Windows服