控制器参数的Spring注释包装器

时间:2018-06-19 12:08:04

标签: spring rest validation http request

我有带有方法的RestController:

@CrossOrigin
@PostMapping("/change_password")
@ApiOperation(value = "Change user password")
public AbstractResponseConfirmationDTO changePassword(@Valid @RequestBody ChangePasswordDTO passwordDTO) {
    return authorizedEmployeeServiceImpl.changePassword(passwordDTO);
}

在这里,我有@Valid和@RequestBody批注。如何将它们包装成一个注解?我希望它像这样:

@CrossOrigin
@PostMapping("/change_password")
@ApiOperation(value = "Change user password")
public AbstractResponseConfirmationDTO changePassword(@AuthorizedRequestBody ChangePasswordDTO passwordDTO) {
    return authorizedEmployeeServiceImpl.changePassword(passwordDTO);
}

@RequestBody和@Valid不能应用于类型。

1 个答案:

答案 0 :(得分:0)

您不能这样做。为了创建带有其他注释的注释,注释应为ElementType TYPE

@Valid@RequestBody没有ElementType.TYPE

@Target({ METHOD, FIELD, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
public @interface Valid {
}

这意味着您只能在方法,字段,构造函数和参数上使用此注释。不在课堂上。

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestBody {
}

这只能在参数级别使用。