我是反应式编程的新手。请协助在穆特尼实现以下目标。
我有一节DTO课
public class UserAppSessionDto{
private UserDto user;
private List<OrgDto> userOrgs;
private List<AppDto> userApps;
}
3种服务方式,一种返回Uni,另一种返回Multi。
Uni<UserDto> getUserByOrgUserId(Integer orgUserId);
Multi<AppDto> getUserApps(Integer orgUserId);
Multi<RoleDto> getUserRoles(Integer orgUserId);
我需要编写一个调用上述3个方法的服务方法,应用一些业务验证,将返回值设置为UserAppSessionDto
的实例并返回一个Uni
public Uni<UserAppSessionDto> getUserAppSessionDetails(Integer orgUserId)
{
UserAppSessionDto user=new UserAppSessionDto();
//1. call the method Uni<UserDto> getUserByOrgUserId(Integer orgUserId)
//2. If UserDto (in the returned Uni) is not null, call Multi<AppDto> getUserApps(Integer orgUserId) and Multi<RoleDto> getUserRoles(Integer orgUserId) methods in parallel.
//3. Set the return values from the above three methods into user variable
//4. Return Uni<UserAppSessionDto>
return Uni.createFrom().item(user);
}
为什么getUserApps和getUserRoles返回Multis?我认为他们不会以流式方式显示结果,而是一批返回列表。如果是这种情况,请使用Uni
通过此更改,您的逻辑变得更加简单:
public Uni<UserAppSessionDto> getUserAppSessionDetails(Integer orgUserId) {
UserAppSessionDto user=new UserAppSessionDto();
Uni<UserDto> uni = getUserByOrgUserId(orgUserId)
.invoke(userDTO -> user.user = userDTO);
return uni
onItem().ifNotNull().transformToUni(userdto ->
Uni.combine().all()
.unis(getUserApps(orgUserId),getUserRoles(orgUserId))
.asTuple()
.invoke((apps, roles) -> user....)
)
.map(x -> user);
}
综述 在多功能的动态web应用程序中测试业务逻辑漏洞需要用非常规手段来思考。如果应用认证机制原先以1、2、3的步骤依次执行的验证身份目的来开发,万一用户从步骤1直接跳到步骤3会发生什么?用更加简单的例子来说,在打开失败、权限拒绝或仅仅500的错误的情况下,应用程序是否依然能够提供访问权限? 可以举出许多例子,但是不变的思想是“跳出常规思维”。这种类型的漏洞无法被漏洞扫描工具探测到,依赖于渗透测试人
问题内容: 软件体系结构中的域对象和域服务是什么?我不熟悉它们,或者它们与业务逻辑层有何不同? 问题答案: 不同的人以不同的方式使用这些术语,但这是我的看法: 1)“业务”和“域”大致是同义词。“域”更为通用,因为它不会假设您正在编写业务应用程序。因此,如果我们正在编写科学应用程序或游戏,则可能更喜欢将代码的相关部分称为“域”代码,而不是“业务”代码。因此,在本说明的其余部分中,我将使用“域”,因
1.1 概述 业务逻辑模块主要用于编写业务逻辑,一般包含三个子模块:action(定义action和procedure)、code(业务逻辑的实现,一般使用java实现,有src,dsrc,lib)、fn(函数定义)。 1.2 Action定义 语法: <action name=" n" global="true" log-enabled="true" procedure=" "> <参
问题内容: 我的应用程序中有两层验证。首先是由bean验证API执行的实体验证(例如,必填字段)。第二层是业务逻辑验证。例如,用户有一个帖子。用户只有自己是该帖子的创建者,并且帖子评级小于50,才能删除该帖子。因此,我必须执行以下操作: 我不喜欢这种方式,因为这种条件被重用,而且我不得不重复代码。此外,如果条件数大于5左右,那么阅读和理解代码就变得不现实。 此外,标准的Spring Validat
我有一个struts项目,我的客户给了我完整的业务逻辑类。他需要这个忘恩负义的人,昂首阔步,冬眠。 哪一种最好,要将业务逻辑放到我的Dao层,需要为业务逻辑添加一个附加的服务层。 一些strut项目我发现动作类直接访问道。 请建议我哪个更好choice.help高度赞赏。 谢谢,
问题内容: 我认为人们普遍认为,作为Java(以及可能带有异常处理的任何语言)中的一条通用规则,应尽量避免使用异常处理来实际处理业务逻辑。通常,如果预期会发生某种情况,则应该检查并更直接地处理它,而不是依靠异常处理为您做检查。例如,以下情况不被认为是好的做法: 相反,延迟初始化应该更像这样完成: 当然,除了简单地处理延迟初始化之外,还可能存在更复杂的逻辑。因此,考虑到这种事情通常是令人生厌的……何