초기화시 proxyCreater란 녀석이 모든 빈들을 검사한다. 그 중에 보안과 관련된 설정이 있는 메서드들을 찾아낸다.
그 메서드들의 가짜 객체 즉 프록시를 생성한다.
그리고 그 메서드를 사용하기위한 인가처리 즉 어드바이스를 설정한다.
실제 이 메서드를 호출하면 프록시객체가 먼저 나가고 어드바이스 즉 인가 처리를 통과하면 실제 메서드가 호출된다.
자동프록시 생성기가 빈이 쓰여있는 보안에관련된 메서드에대한 프록시를 만든다(preAuthorize or Secured)
포인트컷 에서 빈에 대한 클래스와 메서드 정보를 MethodSecurityMetadataSource에 넘기고 실직적 빈 검사는 여기서 일어난다.
통과되면 프록시가 생성된다. 프록시는 Advisior 을 참조한다.ㄹ
interceptor은 메서드 전후로 부가기능 처리할수있도록 하는것 즉 Advice= 인가처리 담당을 의미한다.
ProxyCreator에서 MetadataSourceAdvisior - pointcut을 통해 모든 빈을 검사해 보안관련된 메서드들을 찾는다.
그 메서드들에 대해 프록시 객체를 만들고 인가처리(Advice) 를 설정한다.
실제 그 메소드 호출시 프록시 객체가 먼저 나가고 어드바이스 인가처리를 실행한다. 인가처리 통과시 프록시가아닌 실제 메서드가 호출됨
*인가처리(advice) 가 등록 되지 않았다면 호출시 실제 메서드가 바로 호출된다.
AOP기반은 필터가아닌 Advice(Interceptor)가 처음으로 클라의 요청을 받는다.
둘다 결론은 AccessDEcisionManager 에게 권한정보를 줘서 인가 처리를 받는것이다. /둘다 인가처리시 부모 클래스 호출 = 공통점
둘다 맵객체에 저장한다. 왼쪽은 URL자원정보를 키로 권한정보. , 오른쪽은 메서드를 키값으로 권한정보를 가져온다
한가지 다른점은 AOP방식은 인가처리뒤 프록시가아닌 진짜 객체의 메서드 호출