我有这样一门DTO课:
public class User {
@Field("id")
private String id;
private String userName;
private String emailId;
}
我必须通过API提供更新和删除功能。
我写了以下代码删除记录:
public Mono<String> userData(User body) {
repo.removeUserDetails(userObj).subscribe();
return Mono.just("Remove Successful");
}
RemoveUserDetails方法如下:
public Mono<User> removeUserDetails(User userObj) {
return findByUsername(userObj.getUsername())
.flatMap(existingUser -> {
// logic to delete the data from database which working as expected
}).switchIfEmpty(
Mono.defer(() -> {
return Mono.error(new Exception("User Name " + userObj.getUsername() + " doesn't exist."));
})
);
}
这段代码的问题是,即使用户不存在,它也不会显示我返回的Mono错误。在任何情况下,都会返回“Remove Successful”。
如何更改我的服务层方法,使其能够返回repo方法接收到的任何内容?我对Reactor代码还不熟悉,所以不知道怎么写。
每当你订阅订阅时,都认为它是立即的红旗。订阅应该由您正在使用的框架来处理(本例中是Webflux)
如果您自己订阅,如本例所示:
public Mono<String> userData(User body) {
repo.removeUserDetails(userObj).subscribe();
return Mono.just("Remove Successful");
}
...然后,您基本上创建了一个“fire and forget”类型的订阅,您无法知道该发布服务器是否成功完成,是否导致了错误,完成所需的时间,是否完成,或者是否发出了元素。因此,在本例中,您的意思是“发送一个删除用户详细信息的请求,忘记您发送了它,然后在等待任何类型的结果之前,始终返回‘删除成功’。”这几乎不是你想要的。
你可以使用以下方法:
public Mono<String> userData(User body) {
return repo.removeUserDetails(userObj)
.then(Mono.just("Remove Successful"));
}
...这是更好的,因为它包括一切作为反应链的一部分。在这种情况下,您要么会得到一个错误信号,要么会得到“删除成功”。
然而,很可能你根本不需要返回这个字符串——你只需要知道它是否成功。这样做的标准方法(我只需要知道它是否成功完成,我不需要它返回值)是使用Mono
public Mono<Void> userData(User body) {
return repo.removeUserDetails(userObj).then();
}
...如果删除成功,它会给你一个标准的完成,否则会给你一个错误信号。
我正在使用JBoss6.1、Spring3.2、hibernate验证以及最近启用的CORS支持。请求与GET方法配合良好。如果使用请求方法POST,我希望控制器返回405。但我得到的是http状态码400。我在jboss日志中启用了跟踪,发现spring返回了错误的处理程序。应用程序只有一个控制器接受POST请求方法,其余控制器定义为只接受GET方法。每当使用POST请求方法对这些控制器(用GE
我有一个很长的方法,其中包含一堆将返回当我们发现无效对象时。 如何生成和提取这些验证代码。错误我已经尝试了以下方法,但它警告我需要指定
如何正确处理由期货构建的Monos? 我试着让我的头脑围绕着Spring Reactive(和Spring 5),观看所有的视频,阅读所有我能找到的博客,但他们似乎都没有做一些事情,而不仅仅是查询数据库或其他琐碎的事情。 我正在使用新的AWS 2.0开发工具包,它使用的用于大多数事情。使用服务创建新实例,我的方法如下所示 我在这里的理解是,我几乎立即返回类型的,而将随时执行它的操作。 我从我的路由
我们有一个Hystrix(1.4.x)命令如下所示(使用Spring): 实际上,我们不想从回退方法返回(空的),而是抛出一个异常,以便的调用方知道已关闭,并可以相应地执行操作。但同时我们希望利用Hystrix提供的功能。 在我们的例子中,我们希望调用方返回一个错误消息,而不是返回一个列表。在Spring中实现了一个后退,如下所示: 从引发异常“有效”,但Hystrix将警告我们: Command
问题内容: 我使用Jenkins(在Windows计算机上)作业通过Ant为不同的目标编译一些代码。为此,我将对ant目标的调用包装在(windows)批处理循环中,如下所示: 那是我的第一个主意……但是即使(例如)target1失败,此代码也可以成功构建。因此,我在Windows批处理构建步骤中增加了一些内容,以获取更多概述。另外,我还用了cecekdout代码来获得与Jenkins本地计算机相
目前,我正在抛出以返回GraphQL验证错误。它工作得出奇的好,除了在我的日志中用大堆栈跟踪抛出可怕的错误。 在这里,您可以看到我正在检查提交的新用户注册突变,以确保密码相互匹配,并且电子邮件地址尚未使用。 在GraphQL SPQR Spring Boot Starter中,正确的方法是什么。