관점 지향 프로그램 Aspect Oriented Program
예시
class A {
private void a() {
dothisA();
System.out.println("this A mothod");
dothisB();
}
}
class B{
private void b(){
dothisA();
System.out.println("this B mothod");
dothisB();
}
}
class C{
private void c(){
dothisA();
System.out.println("this C mothod");
dothisB();
}
}
위와 같은 형태의 중복되는 dothisA(), dothisB()의 실행을 따로 모아서 실행하는 방식으로 변경하는 것
class A {
private void a() {
System.out.println("this A mothod");
}
}
class B{
private void b(){
System.out.println("this B mothod");
}
}
class C{
private void c(){
System.out.println("this C mothod");
}
}
class abc {
private void abc(JoinPoint point){
dothisA();
point.execute();
dothisB();
}
}
AOP구현 방법
- 컴파일 A.java ----(AOP)---> A.class (AspectJ)
- 바이트코드 조작 A.java -> A.class ---(AOP)---> 메모리 (AspectJ)
- 프록시 패턴 (스프링 AOP)