간소화된 Advisor

less than 1 minute read

PointCut을 위해 Advisor가 필요했었는데 이 설정을 간소화하고 싶음

image

  • Advisor와 PointCut이 결합된 형태의 Advisor를 사용할 수 있음

  • 결합되면서 PointCut의 내용이 Advisor의 안으로 들어감

image

  • 이전 코드는 주석 처리하고 Advisor 내용을 복사해 결합된 Advisor를 만듦

  • PointCut의 이름을 Advisor 앞에 붙여놓음

  • property 태그를 이용해 total과 연결

image

  • 실행 시 오류가 나게 되는데 PointCut을 다른 곳에서 쓰고 있었기 때문임

image

  • 예전의 코드들은 모두 주석 처리하고 앞서 설정한 것과 동일하게 만들어줌

image

  • 실행해보면 total 함수에 대해서만 Around, Before Advice가 실행된 것을 볼 수 있음

image

  • mappedName’s’라는 것으로 바꾸면 여러 개의 PointCut에 대해서 Advisor를 추가할 수 있음

image

  • avg에도 Around Advisor가 추가된 것을 볼 수 있음

  • 강의에서는 Before Advisor에 추가했음

패턴으로 할 수 있진 않을까?

image

  • 정규식 패턴을 사용할 수 있음 PointCut을 새로 설정

  • 정규식의 의미 .(온점) : 어떠한 캐릭터, (별표) : 캐릭터가 0개 이상 나올 수 있음, .(온점과 별표) : 어떠한 캐릭터가 0개 이상 나올 수 있음

  • patterns라는 name으로 바꿔주며 class도 RegexpMethodPointCutAdvisor로 바꿔줌

image

  • 실행해보면 total에 대해서만 Around Advisor가 호출된 것을 확인할 수 있음

  • 정규식 이외에도 스프링이 나오기 전부터 있었던 표현 방법이 존재 (AspecJ)

실질적으론 어노테이션을 통해 쓰므로 다음 시간에는 어노테이션을 통한 Advisor 설정을 알아볼 것

참고 영상
Watch the video