만약 A라는 클래스가 있고 이클래스에 c(), d() 메소드가 있을때..
class A {
public void c() {
d();
}
public void d(){}
}
public void c() {
d();
}
public void d(){}
}
이런식으로 c()메소드내에서 d() 메소드를 호출하는 구조이고, d()메소드에 AOP를 적용하였을 경우 실행시켜보면 d() 메소드의 advice는 실행되지 않는다
d() 메소드의 advice가 실행되도록 하기 위해선 c()메소드내에서 A 클래스의 프록시를 얻어오고 그 프록시를 통하여 d()메소드를 호출하여야 한다
아직 해보진 않았고 들은 얘기다. 그래서 이 이야기가 맞는진 아직 확인되지 않는다. 정말 이것이 사실이라면 스프링 AOP를 사용하는것이 쉽지 않을것 같다. 또한 빈 내에 프록시를 얻어와야 하는 코드가 삽입되므로 인해서 스프링에 의존성있는 코드가 될것 같다. 스프링의 유연함에 감동해왔던 나에겐 적지않은 충격이다. 어서 확인해봐야겠다.