Spring에 관한 흥미로운 글 몇가지
지난 2년간 SpringFramework만큼 많은 사람의 주목을 받고 빠르게 현장에 적용되어진 자바프레임워크는 없었던 것 같다. SpringFramework에 관한 독특한 현상 중의 하나는 이 프레임워크에 대한 두드러진 비판을 거의 찾아보기 힘들다는 것이다. 대부분의 자바 프레임워크들은 많은 이슈와 논쟁을 몰고다닌다. 한쪽으로는 종교적일만큼 열성적인 팬이 있는 반면에 한쪽에서는 비판자들 또는 안티그룹들이 항상 존재한다. 하지만 SpringFramework에 대해서는 기사나 블로그나 책 어디를 보아도 온통 칭송일색이다. 그만큼 뛰어나고 완벽한 – 한번 쓰기 시작하면 없이는 더 이상 개발을 못할만큼 – 프레임워크라는 증거이다. 이런 분위기에서 용감하게 Spring에 대한 비판적인 의문을 제시한 사람이 있다. 자극적인 주제답게 벌써 답글도 30여개가 달렸다. Spring의 일부 개발자도 가세해서 장문의 답글을 주고 받으면서 논쟁을 진행하고 있다. 하지만 Bob이 말하는 Spring의 문제제기는 사실 그의 Spring 또는 애플리케이션 프레임워크에 대한 이해와 지식이 매우 가볍다는 사실을 보여주는 것 이상 나아가지 못하고 있다. Spring개발의 동기와 배경 그리고 목적에 대해서 잘 설명하고 있는 그 유명한 책 J2EE Development Without EJB의 초반부만 읽어봤어도, 아니 Rod Johnson의 Spring에 관한 강의나 아티클 한두개만이라도 주의를 기울여 봤다면 Spring과 그 개발자들이 공격하고 있는 대상은 EJB지 J2EE가 아니라는 점은 명확하게 알 수 있을 것이다. 뭐 아직도 J2EE = EJB라는 단순 무식한 공식에 매였있던가. 또 Spring XML을 사용하기 때문에 결국 그 애플리케이션은 Spring에 의존적이다라는 선언은 또한 얼마나 무식한 발상에서 나온 말인지 모르겠다. 코드의 특정 기술/프레임워크의 의존성을 피하기 위해서 그 의존관계를 XML로 뽑아놓은 것인데 그것을 꺼꾸로 의존관계의 주범으로 말하고 있는 것을 보면 그의 기본적인 이해수준에 의문이 가기 시작한다. Generic에 대한 요구는 뭐 Java5와 Generic 애용자로서 나 또한 가지고 있는 불만이기는 하다. 하지만 범용프레임워크가 그 core기능을 JDK5에 제한한다는 것은 자해행위일 것이고 프레임워크 전체를 Java5버전과 그 이전버전으로 이중으로 가져가는 것은 언젠가는 가야할 방향이지만 Spring의 방대한 구조를 생각해볼때 그리 쉽지 않으리라 생각된다. 2.0M1에서 추가된 Generic을 이용한 Jdbc Dao의 확장기능이나 AOP나 트랜잭션의 설정을 일부 Annotation으로 가져가게 한 것처럼 단계적으로 Generic이나 Java5의 장점이 많이 이용되어질 것으로 기대해본다.
내가 그의 글에서 한가지 진지하게 생각본 부분이 있다. Spring을 이용해서 개발을 하면 무엇이 좋다고 생각하는가라는 질문이다. 나는 이 질문에 대해서 Spring을 공부하거나 사용하고 있는 개발자들이 나름대로 명확한 대답을 할 수 있어야 한다고 본다. Spring의 장점은 무엇인가? 정말 개발과정에서 그렇게 느끼고 확신하고 있는가? Spring을 쓰면서 좋았던 점은 아마 개발자마다 다 다를 수 있다고 생각된다. 워낙 전방위적으로 J2EE기반의 애플리케이션 개발의 많은 부분을 지원하고 있기 때문에 각자 느끼는 매력이나 편리함은 다를 수 있다. 어쩌면 그 장점을 많은 시간이 지난 다음에서야 느낄 수 있을지도 모르겠다. 하지만 적어도 다른 개발자나 프로젝트를 함께하는 팀원들에게 Spring을 쓰라고 권하려면 구체적인 Spring을 사용해서 얻을 수 있는 좋은 점에 대해서 설명할 수 있어야 할 것이다. 단지 요즘 뜨는 프레임워크기 때문이라던가 남들이 좋다고 하니까라는 생각으로 Spring을 쓰기 시작한다면 Spring의 장점의 많은 부분을 놓칠지도 모른다.
한가지 더 내 눈길을 끈 Spring에 관한 글은 SpringMVC에 관한 깊이 있는 분석을 다루고 있는 SpringMVC 컨트롤러 탐험기이다. 시리즈로 계속 올라오는 이 글은 SpringMVC의 핵심인 Controller(Handler)의 다양한 클래스들을 분석하고 이의 작동원리와 사용방법에 관한 내용으로 이루어져있다. 이전에 많이 보던 SpringMVC에 관한 추상적인 설명이나 Tutorial성의 글이 아니고 SpringMVC API doc과 소스레벨까지 살펴보면서 단계적으로 접근하고 있는 매우 흥미로운 글이다. SpringMVC을 공부하는 개발자 뿐만 아니라 공개되어있는 소스코드를 가지고 있는 프레임워크나 툴을 어떻게 분석하고 공부할 수 있는지를 알고 싶은 개발자들도 관심을 가질만한 내용이다. Spring은 충실하게 작성되어져있는 reference manual뿐 아니라 API doc도 매우 많은 정보를 담고 있다. 또한 소스코드를 살펴보는 것만으로도 많은 지식과 영감을 얻을 수 있다.
스킨 바껐네..
안녕하세요~ 토비님 블로그 팬중 하나 입니다..:-)
저도 TSS에서 Comment들을 보았습니다.. 아직 Spring을 써보지 않아서.(회사에서 Spring을 추천해 볼까 생각만 하고 있습니다.) 잘은 모르겠지만.. 제가 Spring에 대한 (정확히는 Ruby의 OnRails나 Python의 Django나 PHP의 Sympony에 비하여) 느낌은 xml 파일의 양입니다.-_-; 대개 사이트 개발할때 대충 그까이꺼~ 버젼으로 잡아도 10~20 넘는 패캐지들을 가지는데 이 친구들의 DAO,Services,MVCMapping 설정파일을 생각하면 어마어마할꺼 같은데요.. Xml load까지도 느리지 않을까 생각될정도로.. ;;
예전에 EJB3의 SLSB으로 작업할때는 EJB2와 비교도 안될정도로
easy하다는 느낌을 지울수 없었는데요..
EJB2에 비하여 Spring은 우세인건 확실한거 같은데요.
EJB3와 비교해서는 Spring이 더 어렵다는 생각도 들수 있지 않을까요?.. (물론 EntityBean(Persistence API)는 Spring도 지원하겠다고 했지만요.)
이제 EJB3 spec이 끝났으니까 아직 전면전은 아닙니디만..
종종 자바는 프레임워크 자체를 선택하는 것부터 너무 어려운거 같습니다..T_T
[...] Spring에 관해서 얼마전에 Bob Lee가 비판한 것과 비슷한 내용의 글을 보았다. 이번 글에서도 지난번에 지적한 내용과 같은 오류를 발견했다. SpringFramework을 J2EE와 대립하는 또는 대신하려는 기술로 이해한다는 것이다. J2EE라는 말이 가진 파워때문인가 자꾸 사람들은 J2EE를 들먹이며 Spring을 비판하려고 한다. 여전히 엉뚱한 공격일 뿐이다. Spring의 개발자들이 공격하는 것은 EJB2.x이지 J2EE가 아니다. Rod Johnson은 그 책과 강의에서 수도없이 EJB != J2EE라고 이야기한다. Spring은 J2EE를 그 장점을 살리면서 더욱 효과적으로 사용할 수 있게 만들어 줄 수 있는 기술이다. [...]