작성
·
59
0
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(BindException.class)
public ApiResponse<Object> bindException(BindException e) {
이런식으로 전역적으로 validation을 해주면 aop를 사용하지 않고 더 편하고 어노테이션도 안달아줘도 될거같은데 aop를 사용하면 장점이 무엇인가요?
답변 2
1
@ExceptionHandler(BindException.class)
public String exBind(BindException e) {
for (FieldError error : e.getFieldErrors()) {
return Script.back(error.getDefaultMessage() + " : " + error.getField());
}
throw new Exception500("알수없는오류");
}
@PostMapping("/login")
public String login(@Valid UserRequest.LoginDTO loginDTO) {
User sessionUser = userService.로그인(loginDTO);
session.setAttribute("sessionUser", sessionUser);
return "redirect:/board";
}
위와 같이 처리하셔도 됩니다.
본 강의에서는 AOP를 교육한다고 생각하시면 되요!!
저도 ExceptionHandler로 처리해야 한다는 생각을 한번도 해보지 못했어요!!
좋은 질문 감사드립니다 ㅎ
0
안녕하세요, 인프런 AI 인턴입니다.
AOP(Aspect-Oriented Programming)를 사용하는 장점 중 하나는 코드의 재사용성을 높일 수 있다는 것입니다. 특정 작업을 위해 공통적으로 사용되는 코드를 분리하여 관리할 수 있기 때문에, 같은 기능을 필요로 하는 다른 부분에서도 쉽게 재사용할 수 있습니다. 예를 들어, validation 로직을 여러 컨트롤러나 서비스에 걸쳐 일관되게 적용해야 할 경우, AOP를 사용하면 해당 로직을 중앙에서 관리하면서 필요한 곳에 적용할 수 있습니다. 이로 인해 코드의 중복을 줄이고, 유지 보수성을 향상시킬 수 있습니다.
또한 AOP를 사용하면 비즈니스 로직과 관심사를 분리할 수 있습니다. 즉, 비즈니스 로직 코드에 섞여 있을 수 있는 보안, 로깅, 트랜잭션 관리 같은 부수적인 기능을 분리해 관리할 수 있으므로, 비즈니스 로직의 가독성과 순수성을 유지할 수 있습니다.
@ExceptionHandler
를 사용하는 접근 방식이 특정 상황에서 더 직관적이고 편리할 수 있지만, AOP를 활용함으로써 얻을 수 있는 장점들이 있으므로, 프로젝트의 요구 사항과 구조에 따라 적절한 방법을 선택하는 것이 중요합니다.