목록Spring (5)
S E P H ' S
JDK 동적 프록시 & CGLIB 동적 프록시 이전 포스트의 내용을 한번 정리하고 프록시 팩토리에 대해서 시작해보자. 동적 프록시를 생성하기 위해 Java의 리플렉션을 활용하여 동적으로 메소드를 뽑아냈다. 그리고 이를 바탕으로 구현된 JDK 동적 프록시 기술로 프록시 객체를 만들어 의존관계 주입을 통해서 처리했다. 그러나 JDK 동적 프록시는 반드시 인터페이스가 있는 환경에서만 사용할 수 있다는 한계가 있다. 인터페이스의 클래스 로더, 클래스 메타 정보 등을 넣어주어 동적으로 메소드를 뽑아오기 때문이었다. 그래서 인터페이스 없이 구체 클래스만 있을 때는 CGLIB라는 라이브러리를 이용하여 대상 객체를 상속받은 동적 프록시 객체를 만들었다. 실무에서는 인터페이스가 있는 경우, 구체 클래스만 있는 경우 등 ..
AOP 포스팅 4. Spring AOP와 디자인 패턴 (1) 5. Spring AOP - 총정리 (2) AOP를 달성하기 위해 사용한 디자인 패턴을 알아보면서 어떤 식으로 개선을 해왔는지 알아봤다. 하지만 5번 포스팅의 마지막 정리 부분에서 말했듯이 프록시 패턴이나 데코레이터 패턴을 사용하더라도 부가 기능을 도입하고자 하는 클래스의 개수만큼 필요한 클래스를 만들어야 한다는 문제점이 있었다. 이를 동적 프록시 적용 (JDK 동적 프록시, CGLIB, ProxyFactory) 으로 해결할 수 있다고 했었다. 동적 프록시(Dynamic Proxy) 앞서 말했듯이 프록시를 적용해야할 클래스가 너무 많다면 프록시 클래스를 그 개수 만큼 일일이 만드는 것은 엄청난 노동이다. 이를 해소하기 위한 기술이 동적 프록시이..
Spring AOP Spring AOP에 대한 이해를 위해 지난 포스트 에서는 AOP를 달성하기 위해 사용한 디자인 패턴을 알아보면서 어떤 식으로 개선을 해왔는지 알아봤다. 하지만 결국 마지막 정리 부분에서 말했듯이 프록시 패턴이나 데코레이터 패턴을 사용하더라도 부가 기능을 도입하고자 하는 클래스의 개수만큼 필요한 클래스를 만들어야 한다는 문제점이 있었다. 이를 동적 프록시 적용 (JDK 동적 프록시, CGLIB, ProxyFactory) 으로 해결할 수 있다고 했는데 이를 위해서는 Spring AOP 용어 이해가 필요하다. AOP 란? AOP는 로직을 볼때, 핵심적인 관점과 부가적인 관점을 나누어 보고 그 관점을 기준으로 모듈화를 한다고 했었다. 다음 그림을 보자. 그림과 같이 클래스 A, B, C에서..
Spring AOP 지난 포스트에서는 Spring의 핵심 3대 요소에 대해 알아봤다. 이번 포스트에서는 AOP 에 대해서 더 깊이 있게 다뤄볼 것이다. Spring에서 AOP 를 적용하는데에 있어 생각보다 단순하지는 않기 때문이다. 많이 복잡할 것이지만 차근차근 하나씩 개념을 짚어나가보면 좋을 것 같다. AOP에 대한 기초 개념은 지난 포스트에서 다뤘기 때문에 더 깊이 있는 내용들을 위주로 다뤄보겠다. 크게 AOP에 사용되는 디자인 패턴과 용어 및 적용 방식 등과 같이 두 가지로 챕터를 나눠서 정리할 것이다. AOP 와 프록시 패턴, 데코레이터 패턴 AOP는 로직을 볼때, 핵심적인 관점과 부가적인 관점을 나누어 보고 그 관점을 기준으로 모듈화를 한다고 했었다. 다음 그림을 보자. 그림과 같이 클래스 A,..