프로그래밍/Spring Framework

추상화, DI

모지사바하 2013. 6. 7. 17:15

스프링의 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 인 것이다.


단지, 스프링에서 추상화 인터페이스를 구현한 각 구현체들을 많이 제공하고 있어서 개발자가 


엄청 편하게 사용할 수 있는 것이다...