권한정보 설정시 자원에 포인트컷 표현식을 사용할수 있도록 지원하는 클래스
이 방법을 사용하면 빈 검사시 포인트 표현식과 매칭되는 클래스, 메소드, 권한정보를 MapBased에 전달한다. 그 이후 과정은 똑같다. 프록시 생성해주고 advice설정하고
이전 방식과 매우 흡사하며 pointcut 표현식만 추가된 느낌이다.
빈 생성시 접근제한자가 public이 아니라 리플렉션 을 이용해 생성한다.
저번에 method방식과 매우 흡사하다. 다른점은 DB에서 권한정보를 포인트컷 형식으로 가져와 바로 mapBased에게 보내는것이 아니라 ProtectPointcutProcessor에게 보내준다. 그러면 빈 검사시 빈 메서드들과 포인트컷표현식으로 쓰여진 권한정보를 서로 비교해 해당하는 메서드들을 파씽해 mapBased에게 전달 해준다.
포인트컷 표현식만 추가된것이기떄문에 기존의 방법과 매우 흡사하다.
눈여겨 볼점은 빈 생성시 접근자가 public이 아니라 리플렉션 방법을 사용해야 한다는 점이다.
이렇게만 작성해서 돌리면 오류가난다. 빈검사시 빈 메서드들을 가져와 pointcut표현식으로 작성된 메서드 권한정보들과 비교하는 부분이다. 별도의 try-catch문이 없어서 예외가 터지면 동작을 멈추게 된다.
그래서 우리는 저 클래스를 public 클래스로 똑같이 복사하고 빈메서드들과 포인트컷 표현식 비교부분을 try-catch문으로 감싸준뒤에 bean으로 등록 할예정이다.
그러면 비교시 오류가 안나고 비교가 잘 진행 됀다.