스프링의 3대 핵심 기술 중 "추상화" 라는 것이 있다..
갑자기 누군가 나에게 추상화에 대해 설명해 보라.. 라고 질문을 한다면 뭐라고 답을 해야할까? 라고 생각을 해보았다.
생각을 해보니, 추상화라는 것은 결국 DI 일 뿐이였다.
예를 하나 들어볼까..
뭐가 좋을까..
OXM 추상화 를 예로 들어보자 ..
스프링은 OXM 추상화를 제공한다.
oxm 기술에는 비슷비슷한 여러가지가 있는데,
Castor , JaxB, Xstream 등이 있다.
스프링에선 위 기술들에 대한 추상화 인터페이스로 Unmarshaller 를 제공한다.
그리고 각 기술에 대한 구현체들도 제공한다. 당연히 추상화 인터페이스인 Unmarshaller 를 구현하고 있다.
하여, 개발자는 어떤 OXM 기술을 쓰던 Unmarshaller 타입으로 DI 받아 쓰면된다.
예를 들어
<bean id="unmarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller" />
위와 같이 빈 등록을 하면,
기술의 종류에 상관없이 unmarshall(Source source) 메소드를 호출하면 된다.
이것이 바로 추상화다.
그리고 DI 다. 추상화 = DI 인 것이다.
단지, 스프링에서 추상화 인터페이스를 구현한 각 구현체들을 많이 제공하고 있어서 개발자가
엄청 편하게 사용할 수 있는 것이다...