Spring - AOP

우야·2021년 7월 7일
0

AOP 란?

AOP를 간단하게 정의 하자면

  • 여러 오프젝트에 공통적인 부가기능을 모듈화하여 재사용하는 기법으로 Proxy 패턴같이 사용할 수 있음
  • 기존 코어 코드에 손을대지 않고, Proxy 기능으로 추가 할 수 있음
  • 필요한 이유는
    • 핵심이되는 비지니스 로직과는 별개로, AOP로 추가되는 Proxy 코드는 핵심이 되는 비지니스로직의 전, 후 처리로 사용
    • 또는, 여러 비지니스 로직에서 공통되는 부분을 모듈화하여 별도로 관리할 수 있음

사용 예

  • 비지니스 로직과 상관없이 개발자, 운영자에 필요한것을 넣을때
  • 비지니스 로직의 앞,뒤 로그를 넣을때
  • 비지니스 로직의 Transaction을 처리 할때
  • 비지니스 로직의 예외처리를 적용할때
  • 성능 검사 할때

용어 정리

  • AOP : Aspect-Oriented Programming (관점 지향 프로그래밍)
  • Advice : Before, after, around, throw로 AOP의 구현부에 대한 것으로, Implementation하거나 Annotation으로 정의 할 수 있음
    • AOP Class 및 코드 구현부
  • Target : AOP가 적용되는 Class
  • JoinPoint : Target의 메소드들(Target 설정시 기본적으로 모든 메소드에 적용)에 적용
  • PointCut : JointPoint 중에서 원하는 메소드에만 AOP를 적용
  • Advisor : PointCut과 Advice를 Mapping하여 PointCut동작을 할수 있게 적용
  • PointCut 사용 방법
    • Target의 특정 메소드에만 AOP의 구현인 Advice를 적용(PointCut)할 것이라는것을 정의 해야 한다.
      1. XML에 PointCut, Advisor 따로 정의
        • PointCut을 XML에 정의 (AOP를 적용 할 Target의 Method Name 정의)
          • NameMatchMethodPointcut : 메소드 이름기반 포인트컷
        • Advisor를 XML에 정의 (PointCut과 Advice 구현부 맵핑)
          • DefaultPointcutAdvisor : 디폴트 포인트컷 어드바이저
      2. XML에 PointCut+Advisor 정의
        • NameMatchMethodPointcutAdvisor 사용

https://admm.tistory.com/58

https://linked2ev.github.io/gitlog/2019/09/22/springboot-mvc-14-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-MVC-Spring-AOP-%EC%84%A4%EC%A0%95/

profile
Fullstack developer

0개의 댓글