인프런 커뮤니티 질문&답변

qheogus55님의 프로필 이미지
qheogus55

작성한 질문수

스프링부트 JUnit 테스트 - 시큐리티를 활용한 Bank 애플리케이션

회원가입 컨트롤러 유효성검사 AOP 적용

validation aop사용에 대해서 질문있습니다.

작성

·

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를 활용함으로써 얻을 수 있는 장점들이 있으므로, 프로젝트의 요구 사항과 구조에 따라 적절한 방법을 선택하는 것이 중요합니다.

qheogus55님의 프로필 이미지
qheogus55

작성한 질문수

질문하기