까지(2023.3.15)

오늘 내가 한 일:

  • 봄 깊어가는 공원 강의 드디어! 다 들었어!!!
  • 작업 lv4 기술 관리자가 코드를 검토하여 리팩토링 완료
  • 할당 lv5와 같은 기능 구현
  • 현장 기술담당자의 조언, 협업 방식, 개발 방법론 등을 들어보세요.

오늘 배운 내용:

1. AOP

AOP는 일반적으로 유효성 검사에 사용됩니다!

원래 포스트 에디트, 댓글 삭제 및 편집, 부분 삭제에 중복 코드가 있어서 aop로 따로 제거하려고 했으나 그러기 위해서는 aop에서 포스트와 댓글을 반납해야 했습니다. 그런데 aop이 @Before나 @Around를 리턴해서 target 메소드에 사용하는 경우를 많이 못봐서 기술담당자에게 물어봤다. 그러자 기술담당자는 보통 aop을 검증용으로 사용하기 때문에 값을 리턴하는 경우는 많지 않다고 합니다.

예: 이전에 작성된 aop 및 대상 메소드(부정확한 코드!!!)

@Before("updateComment() && args(id, user, ..)")
public synchronized Comment execute(Long id, User user) {
    Comment comment = commentRepository.findById(id).orElseThrow(
            () -> new CustomException(ErrorCode.COMMENT_NOT_FOUND)
    );
    userService.checkCommentRole(comment, user);

    return comment
}
@Transactional
public Comment updateComment(Long id, User user, CommentRequestDto requestDto) {

//    Comment comment = commentRepository.findById(id).orElseThrow(
//            () -> new CustomException(ErrorCode.COMMENT_NOT_FOUND)
//    );

//    userService.checkCommentRole(comment, user);
    comment.update(requestDto);

    return comment;
}

이렇게 작성하고 updateComment 대상 메서드에서 주석을 가져오려면 어떻게 해야 합니까? 나는 생각했다.

해결 방법은 의외로 간단했습니다. AOP만 확인합니다. 즉, 주석이 있는지 확인하고 없으면 예외를 throw합니다. 그리고 사용자 권한도 checkCommentRole 함수로 확인합니다. 그리고 그냥 void 타입으로 반환합니다. 변경 코드는 다음과 같습니다.

@Before("updateComment() && args(id, user, ..)")
public synchronized void execute(Long id, User user) {
    Comment comment = commentRepository.findById(id).orElseThrow(
            () -> new CustomException(ErrorCode.COMMENT_NOT_FOUND)
    );
    userService.checkCommentRole(comment, user);
}
@Transactional
public Comment updateComment(Long id, CommentRequestDto requestDto, User user) {

    Comment comment = commentRepository.findById(id);
    comment.update(requestDto);

    return comment;
}

2. 프런트 엔드는 항해 개발 프로젝트와 많은 관련이 있습니다!

세일링에는 웹디자이너와 퍼블리셔가 없기 때문에 프런트엔드도 이 두 가지 역할을 맡아야 합니다. 그래서 프런트엔드는 매우 바쁘다! 따라서 백엔드는 프런트엔드를 매우 잘 이해해야 합니다. 백엔드에서 API를 개발했는데, 전면에서 시간이 다 되어가다 보니 그 부분에 대한 화면을 만들어서 최종 발표할 때 보여드리지 못할 수도 있습니다. 우리는 서로를 잘 이해해야 합니다!

백엔드가 서버에 연결하고 테스트할 수 있도록 API를 빠르게 생성하고 배포하는 것도 좋습니다. 그렇지 않으면 전면에서 테스트하기 어려울 것으로 알려졌습니다.

그래서 최대한 빨리 개발해서 배포해서 접수처에 제출하고 개인적으로 공부해보도록 하겠습니다!

프로젝트가 시작되려니 설레기도 하고 걱정되기도 하고 설레기도 하고 부담스럽기도 합니다.

잘 하실 것 같아요!! 갑시다! 인상적이다!!

-극-