💬 LANGUAGES/JAVA

[Spring] JoinPoint와 ProceedingJoinPoint 차이

삶감 2022. 7. 22. 14:07

JoinPoint와 ProceedingJoinPoint 차이

보안점검 프로젝트를 하는데 비밀번호 변경일이 90일이 지난 경우 사용자가 비밀번호를 변경하도록 유도해야한다.
90일이 지난 후에도 비밀번호를 변경하지 않으면 비밀번호 변경 페이지 외, 다른 페이지로의 접근이 불가하도록 막아야했다.
이를 구현하기 위해서 모든 컨트롤러에 비밀번호 변경일을 검증하는 로직을 추가하지 않고 컨트롤러 진입 이전 관점(Aspect)를 모듈화 하는 AOP를 이용하기로 했다.

관련 이전글
[Spring] AOP Aspect Orientend Programming(관점 지향 프로그래밍)

JoinPoint

  • JoinPoint 인터페이스는 호출되는 대상 객체, 메서드, 전달 파라미터 목록에 접근 할 수 있는 메소드 제공
메서드 접근하는 영역
Signature getSignature() 호출되는 메서드에 대한 정보
Object getTarget() 대상 객체
Object[] getArgs() 파라미터 목록
  • org.aspectj.lang.Signature인터페이스는 호출되는 메서드와 관련된 정보를 제공
메서드 접근하는 영역
String getName() 메서드 이름
String toLongName() 메서드를 완전하게 표현한 문장(반환 타입, 파라미터 타입)
String getArgs() 파라미터 목록

구현 시 주의 사항

  • JoinPoint를 파라미터로 전달 받을 경우 반드시 첫번째 파라미터로 지정해야한다 (그 회, 예외 발생)

ProceedingJoinPoint

  • JoinPoint를 상속받은 객체(JoinPointSignature메서드를 이용할 수 있음)
  • ProceedingJoinPoint는 Around advice(@Around)에서만 지원되는 JoinPoint
  • Around Advice는 ProceedingJointPoint를 첫 번째 파라미터로 전달받음
  • Target Object의 메소드 정보를 포함
    • ProceedingJoinPoint.proceed()는 Target의 메소드 실행을 제어할 수 있음

참고

728x90
728x90