Hchanghyeon / dev-troubleshooting

개발하며 마주쳤던 크고 작은 문제들과 고민들
1 stars 0 forks source link

[AOP] 공통된 검증 로직 AOP로 개선하기 #8

Closed Hchanghyeon closed 7 months ago

Hchanghyeon commented 8 months ago

문제

    public List<MemberGameResponse> findAllMemberGames(
            final Long loggedInMemberId,
            final Long memberId,
            final RegistrationStatus memberStatus
    ) {
        validateSelfMemberAccess(loggedInMemberId, memberId); // 1
        ... // 비즈니스 로직
    }

    public List<MemberGameResponse> findAllCreatedGames(final Long loggedInMemberId, final Long memberId) {
        validateSelfMemberAccess(loggedInMemberId, memberId); // 2
        ... // 비즈니스 로직
    }

    public GameMemberRegistrationStatusResponse findMemberRegistrationStatusForGame(
            final Long loggedInMemberId,
            final Long memberId,
            final Long gameId
    ) {
        validateSelfMemberAccess(loggedInMemberId, memberId); // 3
        ... // 비즈니스 로직
    }

제가 진행하고 있는 프로젝트에서는 위 코드처럼 로그인 된 id클라이언트에서 조회하려고 넘겨준 id가 동일한지 파악하는 검증 로직이 있습니다. 이렇게 비즈니스 로직이 아닌 코드가 서비스의 비즈니스 로직에 포함되어 사용되는 메서드의 개수가 최소 6개 이상이었고, 다른 클래스에서도 계속 사용되고 있었기 때문에 보기 좋지 않다고 생각했습니다.

또한 해당 로직은 권한에 대한 검증이기 때문에 서비스보다는 Presentation 영역에서 처리하는 것이 맞다고 생각이 들었고, 이것을 개선해보려고 합니다.

Hchanghyeon commented 7 months ago

해결: [AOP] 공통된 검증 로직 AOP로 개선하기