DI 2

추상화, DI

스프링의 3대 핵심 기술 중 "추상화" 라는 것이 있다.. 갑자기 누군가 나에게 추상화에 대해 설명해 보라.. 라고 질문을 한다면 뭐라고 답을 해야할까? 라고 생각을 해보았다. 생각을 해보니, 추상화라는 것은 결국 DI 일 뿐이였다. 예를 하나 들어볼까.. 뭐가 좋을까.. OXM 추상화 를 예로 들어보자 .. 스프링은 OXM 추상화를 제공한다. oxm 기술에는 비슷비슷한 여러가지가 있는데, Castor , JaxB, Xstream 등이 있다. 스프링에선 위 기술들에 대한 추상화 인터페이스로 Unmarshaller 를 제공한다. 그리고 각 기술에 대한 구현체들도 제공한다. 당연히 추상화 인터페이스인 Unmarshaller 를 구현하고 있다. 하여, 개발자는 어떤 OXM 기술을 쓰던 Unmarshaller ..

DI - strategy pattern, decorator pattern, proxy pattern & AOP

DI 의 끝을 모르겠다 ... DI (Dependency Injection) 는 STRATEGY PATTERN(전략 패턴) 이다.. 스프링 프레임워크의 모든 것의 중심엔 언제나 DI가 있다. DI는 확장 포인트 임과 동시에 DI에 또 다른 패턴을 적용함으로써 동적으로 특정 행동을 추가할 수 도 있고, 변경할 수도 있다. 데코레이터 패턴을 잠깐 생각해보자.. InputStream is = new BufferedReaderInputStream(new FileInputStream()); 이는 일종의 생성자를 이용한 DI라고 이해하면 된다. 생성자를 이용한 DI를 통해 특정 기능을 동적으로 추가해주고 있는 것이다. 프록시 를 살펴보자. class HelloProxy{ Hello hello; public void..