프록시는 AOP를 구현하는 기술 중 하나로, 대상 객체에 대한 접근을 제어하고 추가 기능을 수행
프록시를 통해 실제 객체를 감싸서 클라이언트가 실제 객체인지 프록시 객체인지 모르게 하면서 추가적인 기능을 제공
AspectJ
이게 뭐 AOP 와 관련있다는데…
예제
public interface ExpensiveObject { void process(); }
public class ExpensiveObjectImpl implements ExpensiveObject { public ExpensiveObjectImpl(){ heavyInit(); } @Override public void process() { System.out.println("Expensive Object Impl ~~"); } private void heavyInit() { System.out.println("HEAVY"); } }
public class ExpensiveObjectProxy implements ExpensiveObject { private ExpensiveObject object; @Override public void process() { if (object == null) { object = new ExpensiveObjectImpl(); } object.process(); } }
public class Client { public static void main(String[] args) { ExpensiveObject object = new ExpensiveObjectProxy(); object.process(); object.process(); } }