스프링 AOP와 프록시 패턴

1. AOP(Aspect of Programming)

관점 지향 프로그래밍

흩어진 AAAA 와 BBBB

class A {
   method a () {
           AAAA -> AAA
           오늘은 74일 미국 독립 기념일이래요.
           BBBB -> BB
   }
 
   method b () {
           AAAA -> AAA
           저는 아침에 운동을 다녀와서 밥먹고 빨래를 했습니다.
           BBBB -> BB
   }
}

class B {
  method c() {
          AAAA -> AAA
          점심은 이거 찍느라 못먹었는데 저녁엔 제육볶음을 먹고 싶네요.
          BBBB -> BB
  }
}
모아 놓은 AAAA 와 BBBB

class A {
   method a () {
           오늘은 74일 미국 독립 기념일이래요.
   }
 
   method b () {
           저는 아침에 운동을 다녀와서 밥먹고 빨래를 했습니다.
   }
}

class B {
  method c() {
          점심은 이거 찍느라 못먹었는데 저녁엔 제육볶음을 먹고 싶네요.
  }
}

class AAAABBBB {
    method aaaabbb(JoinPoint point) {
         AAAA
	  point.execute()
         BBBB
    }
}

https://velog.io/@jsj3282/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%82%BC%EA%B0%81%ED%98%95%EA%B3%BC-%EC%84%A4%EC%A0%95-%EC%A0%95%EB%B3%B42-AOP1

2. AOP 구현 방법

다양한 AOP 구현 방법(옵션)

  • 컴파일 : A.java ----(AOP)---> A.class (AspectJ)
    컴파일 중간에 AOP를 조작
  • 바이트코드 조작 : A.java -> A.class ---(AOP)---> 메모리 (AspectJ)
    클래스 로더가 클래스 파일을 로딩하는 시점에서 AOP를 조작
  • 프록시 패턴(런타임) (스프링 AOP)

프록시 패턴 : 기존 코드를 건드리지 않고 새 기능 추가하기

Payment : 서비스 인터페이스
Cash : 서비스
CreditCard : 프록시

https://velog.io/@jsj3282/%EC%8A%A4%ED%94%84%EB%A7%81%EC%9D%B4-%EC%82%AC%EB%9E%91%ED%95%9C-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B41

참고

좋은 웹페이지 즐겨찾기