[AOP] Aspect-Oriented Programming

김민중·2025년 2월 28일

Spring Triangle

목록 보기
7/9

흩어진 코드를 한 곳으로 모으자.


흩어진 AAAA와 BBBB

class A {
	method a() {
		AAAA
		내용1
		BBBB
	}
	
	method b() {
		AAAA
		내용2
		BBBB
	}
}

class B {
	method c() {
		AAAA
		내용3
		BBBB
	}
}

위 상황에선 AAAA를 AA로 바꾸고 싶다면, 일일이 바꿔야 한다.

부가적으로 하던 공통의 일들은 따로 모으면 안 되나?

⬇️

모아 놓은 AAAA와 BBBB

class A {
	method a() {
		내용1
	}
	
	method b() {
		내용2
	}
}

class B {
	method c() {
		내용3
	}
}

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

공통 관심 사항을 따로 빼서 정의해 놓았다.

다양한 AOP 구현 방법

  • 컴파일 (AspectJ)
    A.java —(AOP)—→ A.class
  • 바이트코드 조작 (AspectJ)
    A.java → A.class —(AOP)—→ 메모리
  • 프록시 패턴 (스프링 AOP)
profile
Anything

0개의 댓글