반응형
AOP 의 핵심 : 흩어진 코드를 한곳으로 모으는 코딩 기법
흩어진 AAAA 와 BBBB
class A {
method a () {
AAAA
오늘은 7월 4일 미국 독립 기념일이래요.
BBBB
}
method b () {
AAAA
저는 아침에 운동을 다녀와서 밥먹고 빨래를 했습니다.
BBBB
}
}
class B {
method c() {
AAAA
점심은 이거 찍느라 못먹었는데 저녁엔 제육볶음을 먹고 싶네요.
BBBB
}
}
AAAA , BBBB 를 밖으로 빼버린다.
모아 놓은 AAAA 와 BBBB
class A {
method a () {
오늘은 7월 4일 미국 독립 기념일이래요.
}
method b () {
저는 아침에 운동을 다녀와서 밥먹고 빨래를 했습니다.
}
}
class B {
method c() {
점심은 이거 찍느라 못먹었는데 저녁엔 제육볶음을 먹고 싶네요.
}
}
class AAAABBBB {
method aaaabbb(JoinPoint point) {
AAAA
point.execute()
BBBB
}
}
AOP 적용의 두가지 방법
1. byte 코드 조작
.class 파일을 이미 컴파일 된 코드 안에다가 끼워넣는 법.
실제 코드랑 다르게 마치 다르게 짜여진 코드 처럼 동작하게끔 하는 법.
2. Proxy 패턴 사용 : Spring에서는 이 방법을 사용
class A {
method a () {
오늘은 7월 4일 미국 독립 기념일이래요.
}
method b () {
저는 아침에 운동을 다녀와서 밥먹고 빨래를 했습니다.
}
}
class AProxy extends A{
// AAAA 호출되면 method a() 호출하게 하고, 그 다음 BBBB 호출 하게 한다
}
class B {
method c() {
점심은 이거 찍느라 못먹었는데 저녁엔 제육볶음을 먹고 싶네요.
}
}
class AAAABBBB {
method aaaabbb(JoinPoint point) {
AAAA
point.execute()
BBBB
}
}
반응형