当Spring MVC Controller似乎有太多逻辑时

时间:2013-09-18 12:16:31

标签: spring spring-mvc model-view-controller controller

我对ControllerService中包含某种代码之间的界限存在疑问。我认为我把业务逻辑包含在错误的地方。让我向您展示一个我想重构的示例,这是一个处理程序方法的一部分,它接收lists (currentRoles, pendingOfAuthRoles..etc)来更新用户角色:

    //Insert new roles
    List<Role> storedRoles = userService.getRoles(username);
    List<Role> newAcceptanceRoles = new ArrayList<Role>();
    for(Role role : currentRoles){
        if(!storedRoles.contains(role)){
            if(roleService.getPolicies(role.getRoleName()).size()>0){
                userService.insertRole(username, role.getRoleName(), true, false);
                newAcceptanceRoles.add(role);
            }else{
                userService.insertRole(username, role.getRoleName(), true, true);
            }
        }
    }
    if(!newAcceptanceRoles.isEmpty())
        mailService.sendRoleAcceptanceEmail(ControllerUtils.getBaseURL(httpServletRequest), username, newAcceptanceRoles.toString(), userService.getUserByUsername(username).getEmail());

在这部分代码中,我插入了用户和角色之间的新关系。某些角色需要管理员授权,因此USER_ROLE表有一个标志,以便不通过视图将authorized=0的角色包含为当前用户角色。

如果角色未存储为用户角色,则通过将auth标志设置为false来插入角色,此外,如果角色需要授权,则会向管理员发送电子邮件。

我需要像......这样的服务方法吗?

updateUserRoles(currentRoles, pendingOfAuth, pendingOfAccept)

在服务中做这种工作与否?

0 个答案:

没有答案