私は3Tierアーキテクチャ(プレゼンテーション、アプリケーション、ドメイン層)に従ってSpringMVCを使用してWebアプリケーションを開発しています。また、プレゼンテーション層にファサードサービスがあり、コントローラからアプリケーションサービスへの各リクエストはファサードサービス(Contorller - > FacadeService - > ApplicationService)を経由します。アプリケーション層またはドメイン層で例外が発生した場合は、UIに表示する必要があります。それが今実装されている方法です。ファサードサービスでの例外処理
コントローラ
@PostMapping("/password/change")
public String processChangePasswordRequest(ChangePasswordForm form, BindingResult bindingResult){
ChangePasswordReqStatus status = facadeService.requestChangePassword(
form.getOld(),
form.getPassword()
);
if(status == ChangePasswordReqStatus.PASSWORD_MISMATCH)
bindingResult.rejectValue("oldPassword", "password.mismatch", "Wrong password");
return "change_password";
FacadeService
@Override
public ChangePasswordReqStatus requestChangePassword(Password old, Password password) {
try{
accountService.changePassword(old, password);
}catch (PasswordMismatchException ex){
return ChangePasswordReqStatus.PASSWORD_MISMATCH;
}
return ChangePasswordReqStatus.OK;
}
しかし、私はファサードのサービスで例外をキャッチすることができますまたは多分よりよい解決策がある天気をわからないんだけど?