Spring MVC

springmvc.egloos.com


포토로그


2012/02/18 21:39

스프링이 도대체 뭐란 말인가? Spring MVC

본 문서를 읽는 독자들에게 부탁하나 하노라면 토비의 스프링 3와 함께 읽어주길 바란다. 많은 부분이 이 책에서 인용되었고 필자 또한 책을 읽고 이해가 가지 않는 부분에 대해 적어놓는 형태인지라 책과 함께 블로그를 읽는다면 큰 도움이 될 것이라 생각되기 때문이다.

---------------------------------------------------------------------------------------------------------------

[이게 필자가 알고 있는 컨테이너]

토비의 스프링은 다음과 같이 말한다. 스프링은 거대한 컨테이너임과 동시에 Ioc/DI를 기반으로 하고 있는 거룩한 존재이며 서비스 추상화를 통해 삼위일체로 분리되는 3단 변신로봇이라고 한다. 이럴수가! 뭔말하는지는 하나도 모르겠지만 일단 말만 들어도 엄청난데다 가격까지 공짜다. 게다가 이걸 쓰는 사람들마다 칭찬 또 칭찬 일색이니 궁금해서 참을 수가 없다.



근데 말이다…. 필자는 스프링의 지독한 뉴비이므로 여기서 뉴비답게 눈치없게 한번 굴어보려 한다. 일단 스프링이 대단하고 무지 엄청나다는 건 알겠는데…. 컨테이너는 뭐고 IoC/DI는 뭐란 말인가? 평생 살면서 컨테이너란 위의 사진같은 것 밖에 모르는데… 그리고 서비스 추상화? 난 아직 서비스가 뭔지도 모르겠다.


컨테이너란?

컨테이너란 당신이 작성한 코드의 처리과정을 위임받은 독립적인 존재라고 생각하면 된다. 컨테이너는 적절한 설정만 되있다면 누구의 도움없이도 프로그래머가 작성한 코드를 스스로 참조한 뒤 알아서 객체의 생성과 소멸을 컨트롤해준다. 거기다 컨테이너를 이용함으로써 얻게되는 이득은 어마어마 하며, 이런 강력한 기능을 무료로 이용할 수 있다는 점 또한 엄청나다.

허나 소수의 독립심 강하고 줏대있는 사람들은 내가 잘 알지도 못하는 프로그램을 무작정 써야 한다는 것에 반감을 살 수도 있다. 게다가 프로그래머가 다른 라이브러리에 의존하지 않고 직접 코드를 작성해나간다면 완성된 프로그램에 대한 이해도 또한 상상을 초월할 것이다. 혹은 인간이 그렇게 줏대없이 프로그램만 의존하다가 터미네이터나 매트릭스 같은 세상이 되버리면 어떡하냐고 필자에게 따질 수도 있는 것이다.

만약 이러저러한 이유로 컨테이너를 거부하겠다면 필자는 굳이 사용하지 않아도 상관은 없다고 말하겠다. 진심으로 실력만 된다면사용자가 직접 컨테이너를 만들어써도 상관은 없다.

그러나 직접 컨테이너를 구현해보고자 키보드에 손을 올렸다면 아마 배보다 배꼽이 더큰 컨테이너의 어마어마한 기능에 입이 쩍벌어질 것이다. 빈정상하라고 하는 말은 아니지만 사실 당신이 구현하고자 하는 코드와 컨테이너의 구현 코드는 비교도 안될 정도로 수준차가 어마어마하다. 그러므로 코드의 이해가 당장 힘들어지고 뭐가뭔지 모르겠더라도 일단 막강한 기능을 제공하는 컨테이너를 이용하기로 하자.

다시 말하지만 프로그래머가 작성한 코드는 컨테이너를 사용하게 됨으로서 프로그래머의 손을 떠나 컨테이너의 영역으로 떠나버리게 된다. (정확히 말하자면 컨테이너가 맘대로 객체를 생성하는 게 아니라 프로그램을 이용하는 이용자의 호출에 의해 컨테이너가 동작하게 되는 구조이다.) 여하튼 컨테이너를 이용한다면 우리의 골치아픈 문제는 다 컨테이너 알아서 해주므로 쓸데없는 버그나 난해한 과제들에 골치 아파질 이유가 없어진다. 당신은 컨테이너의 기능을 이용하고 사용 중 오류가 있으면 일단 무조건 개발사 탓을 하면 되므로 회사에서 짤릴 가능성까지 어느 정도 낮아진 셈이다!

내친 김에 당신이 필자와 같은 初뉴비라면 임기응변을 위해서라도 반드시 스프링의 개발자와 자바의 개발자 정도가 누군지는 알아두어야 한다. 이런걸 미리미리 알아둬야 나중에 직장 상사가 괜한 버그로 트집을 잡을 때 무조건 이 사람들 탓으로 돌릴 수 있게 된다.

자바의 아버지, 제임스 고슬링 - 선 마이크로시스템즈라는 회사와 함께 자바라는 언어를 탄생시키는데 혁혁한 공을 세운 인물이며 SUN이 오라클로 인수된 뒤 얼마 지나지 않아 회사를 퇴임하고 현재 구글에서 근무 중이다. 개인적으로 C와 UNIX를 만든 데니스 리치 다음으로 훌륭한 프로그래머라고 생각한다.
스프링 혁명가, 로드 존슨 - 프로그래밍 계의 락스타같은 존재라 할 수 있다. 그가 한 유명한 말로 "항상 프레임워크 기반으로 접근하라"라는 말이 있는데 이 말은 곧 당신이 한 클래스에서 DB에 넣고 빼는 등 온갖 짓거리로 코드를 짜고 있다면 당신이 어디가서 프로그래밍의 프자도 꺼내서는 안된다는 말이다.

당신은 이 서블릿 클래스가 몇시몇분몇초에 호출될지 정확히 알고 있는가?

다시 본론으로 돌아와 스프링과 더불어 대표적인 컨테이너를 예로 들자면 톰캣과 같은 WAS(Web Application Service)를 들 수 있다. 우리가 열심히 작성한 서블릿을 써줄지 말지는 톰캣이 결정하므로 당연히 컨테이너 아닌가. 혹여나 그래도 이해가 가지 않는다면… 그냥 당신이 쓰고 있는 코드가 도통 언제 호출될지도 감이 안오는 막막한 상태라면 올바르게 컨테이너를 이용하고 있다고 하자. 그런 의미에서 컨테이너는 당신의 사수나 수석 프로그래머라고 할 수 있다. 내가 쓴 코드를 그 사람들이 써줄지 말지는 모르는 일이니 말이다.


IoC/DI란?

IoC/DI란 Inversion of ControlDependency Injection의 줄임말이다. 한글로 번역하면 제어의 역전, 의존적 주입이라고 하는데 목에 힘을 좀 빼고 솔직히 말하자면 살다살다 한글로 번역까지 했는데 이해 못할 말이 튀어나올 줄은 몰랐다. 그래서 나름 좀… 쪽팔려도 뉴비의 표현으로 바꾸자면 "대신 해줌(IoC)"과 "미리 찜해 놓음(DI)"라고 잠시 명칭을 정정하도록 하겠다.

일단 IoC란 무엇인가? 당신이 위의 컨테이너의 설명글을 꼼꼼히 읽어왔다면 IoC는 지금 당신이 생각하고 있는게 맞다. 바로 컨테이너다. 컨테이너는 당신이 작성한 코드 컨트롤(객체의 생성과 소멸)을 대신 해주는데 IoC덕분에 우리는 미친 사람마냥 언제 호출될지도 모르는 코드를 마음껏! 칠 수 있게 되었다.

사실 IoC는 스프링만의 코딩방식은 아니고 다른 프레임워크에서도 사용되는 방식인데 굳이 스프링만 우리는 IoC 방식이라고 목이 힘주어 강조하는 이유는 스프링은 정말 철저하게 IoC 방식을 써먹었다는 것이다. 그러므로 우리가 여기서 얻을 수 있는 결론은 어디가서 스프링 좀 안다고 IoC가 스프링만의 고유한 방식이라고 떠벌리면 안된다는 것일테다.

그렇다면 DI란 또 무엇인가? 이것은 마치 당신이 받아먹기도 전에 미리 받아먹겠노라고 선언하는…, 주는 놈은 생각도 않았는데 먼저 말부터 꺼내놓는 파렴치한 코딩방식이라고 할 수 있다. 예를 들어 당신이 조촐한 회식으로 사장님과 중국집을 갔는데 당당히 "저는 짜장면 안먹고 양장피 먹겠습니다."라고 선언한다면 당신은 DI개념이 아주 확실한 프로그래머인 셈이다.

게다가 사실 DI 마저도 스프링만의 고유한 방식은 아니라는 거다. DI란 전설과도 같은 프로그래밍 예언서 GoF 중에서 가장 유명한 전략패턴을 일종의 프레임워크 처럼 편리하게 사용할 수 있도록 만든 것이라 할 수 있는데 스프링은 이런 전설로만 알아오던 전략패턴을 뉴비마저도 산소 호흡하듯 능수능란하게 사용하게끔 편리화하였다.

좀 더 구체적으로 DI에 대해 말하자면, DI방식으로 코드를 작성한다면 현재 사용하고 있는 객체의 메서드가 어떻게 작성되었는지 알 필요가 없으며 솔직히 그 클래스가 기능을 잘 구현했는지 조차도 알 필요가 없다. 그저 당신이 확인할 사항은 클래스의 기능을 추상적으로 묶어둔 인터페이스만 갖다 쓰면 그만이다. 나머지는 스프링에서 찜한 걸 연결시켜줄테니 말이다.

아래 그림은 위의 글로만 써놓은 전략패턴과 DI에 대해 정말 간단히 예제로 만든 코드이다.

먼저 말했듯 DI는 스프링만 가지고 있는 고유의 기능이 아니므로 자바의 오브젝트 단위에서도 DI의 구현이 가능하다. 먼저 StrategyPatternService 클래스를 보면 sp라는 객체는 인터페이스 객체인 StrategyPattern로 선언되었으며 StrategyPattern의 메서드인 dependency_injection()를 호출하고 있긴 하다. 그러나 객체 생성 과정에서 객체 sp에 StrategyPatternImpl 클래스를 주입시켜버림으로써 결과적으로 객체 sp는 StrategyPatternImpl의 dependency_injection()이란 메서드를 호출해버리고 말았다는 것이다.

그러므로 위에서 말했듯이 당신은 인터페이스의 메서드만 이용하더라도 위와같이 구현부는 나중에 주입을 통해 해결하므로 획기적인 분업과 동시에 구현 클래스를 쉽게 교체할 수 있다는 장점을 얻게 된다. 물론 스프링은 위의 이미지와 같이 단순한 방식으로 주입하진 않는다. 주입 방식에만 클래스 형태와 XML형태 2가지가 있으며 그 세부적으로도 어마어마하게 많은 방식으로 DI를 할 수 있다.

가끔 스프링을 쓰다보면 이런 다양한 방식이 진짜 편리와 우수한 기능을 위해서인지… 아니면 일부러 사용자를 헷갈리게 하려는 건지 분간이 안갈 때가 종종 있다. (개인적으로 로드 존슨이 프로그래머들을 편집증으로 몰아가기 위해 꾸민 음모가 아닌가 싶다…)

여하튼 IoC/DI의 개념을 요약하자면 정신나간듯 언제 사용될 지도 모르는 코드를 쳐대면서(IoC) 동시에 사용하고 있는 코드가 뭔지도 모르면서 일단 갖다 쓰는(DI) 획기적이고 진보적인 프로그래밍 작성방식이라 이해하면 되겠다.


서비스 추상화란?

솔직히 지금 DI를 설명하면서 서비스 추상화에 대한 부분까지 함께 설명해버렸다. 간략하게 개념에 대해서만 설명하자면 토비의 스프링의 일부분을 발췌하는 것이 좋을 듯 싶다.

추상화란 하위 시스템의 공통점을 뽑아내서 분리시키는 것을 말한다. 그렇게 하면 하위 시스템이 어떤 것인지 알지 못해도, 또는 하위 시스템이 바뀌더라도 일관된 방법으로 접근할 수가 있다.

그렇다. 우리는 위의 간단한 DI예제에서 StrategyPattern이란 인터페이스로 기능을 분리시킴으로서 하위시스템, 즉 클래스가 그 무엇으로 교체되더라도 해당 메서드는 반드시 존재할 것이란 보장을 받은 셈이다. 당신이 위의 모든 글을 읽고서도 아직 잘 이해가 가지 않는다면 지금 당장은 이러한 것을 과연 어떻게 구현해낼까에 대해 고민하지 않아도 된다. 사실 그것을 알아나가는 과정이 바로 스프링을 공부하는 과정이기 때문이다.

다만… DI예제의 과정, 즉 인터페이스를 구현하고 주입하는 과정이 이해가 가지 않는다면 당신은 자바에 대한 기본기가 매우 부족한 것이니 자바의 정석을 펼치고 객체지향개념부터 다시 필독하고 읽어보길 바란다.

덧글

  • 거짓말 2012/02/18 22:02 # 답글

    혹시 이 글을 읽으시면서 어렵다 생각되시는 부분이 있다면 주저없에 답글에 말씀해주시기 바랍니다. 바로 정정해드리겠습니다.
  • finerss 2012/02/24 15:10 # 삭제 답글

    안녕하세요. 초보임을 가장한 작성자의 내공이 느껴지는 글이었습니다.

    스프링만 일년째 사용하여 개발하고는 있지만 스프링에대한 본질적인 개념에대해서는

    최근에 공부하면서 배워나가고있었는데.. 엄청나게 머리아프게 이해했던 ioc/id개념을 참으로 쉽게

    설명해주시니,, 스프링을 처음시작하는 개발자들에게 무척이나 쉽고 명쾌한 개념을 잡아주실 수 있는

    글이아닐까 합니다. 저도 다시시작하는 마음으로 글을 읽고있사오니, 계속해서 글 올려주시면

    감사하겠습니다! 화이팅~!
  • 거짓말 2012/02/25 03:57 #

    잘 이해가 된다니 다행이네요 ^^; 답변 감사합니다.
  • 실버 2012/02/27 13:50 # 삭제 답글

    친절한 설명 잘 보고 있습니다. 이야기를 풀어 나가시는 능력에 감탄 또 감탄합니다.

    별거 아니지만 하나 부탁드리면 DI 설명 코드 예제에서 주입에 관련된 내용이 명확하게 들어나면 더 이해하기 쉬울것 같습니다. 위의 예는 주입(Injection)이라는 느낌이 부족한듯 합니다.

    앞으로도 좋은 포스팅 기대하고 자주 들리겠습니다.
  • 거짓말 2012/03/01 08:37 #

    가급적 이해하기 쉬운 예제를 택했는데 그럴 수도 있겠네요. 좋은 의견 감사합니다 ^^
  • 하레 2012/04/04 11:36 # 삭제 답글

    너무 좋은글 감사합니다.
    막연하게 한두번 다루어본 스프링의 개념이 좀 더 명확하게 잡히는 기분입니다. ㅎㅎ
    염치없는 부탁입니다만 스프링 하면 IoC / DI / AOP 개념을 많이 말하던데
    혹시 AOP에 대해서도 이렇게 쉽게 풀어서 설명해주실 수 있으신가요? ㅎㅎ
  • 거짓말 2012/04/04 16:21 #

    AOP는 CSS와 비슷하지요 ㅎㅎ;;;
  • 난누구여긴어디 2012/04/04 12:01 # 답글

    초보자인척(?) 하시면서 재미있게 풀어나가셔서 잘 봤습니다 ^^
  • 웹프인턴 2012/04/16 17:58 # 삭제 답글

    아.. 정자정부 프레임 워크를 이용해서 스프링MVC를 이해하고, 예제소스를 만들어야 합니다.
    어떤식으로 공부해야 될까요 ㅠㅠ? 시간은 엄씀니가 별로 ㅎ;;;
    일단.. 자바는 대충알고, 전자정부프레임워크로 게시판은 만들어봤습니다.(설명서대로만듦) ㅜ
    톰켓 디비 등은 다 구축되있고요.. @_@;
    근데.. 클라이언트가 요청하면 이게 처음에 디스페치서블릿이 담당하고 소스상에서 이게 막왔다 갔다 하는걸 보여줘야되거든요 ㅠ_ㅠ 아악.. 할수 있게죠 ^ㅡ^?
  • 타쿠마 2012/04/24 14:04 # 삭제 답글

    좋은 정보 감사합니다.
  • 수컷고양이 2012/05/04 11:45 # 삭제 답글

    이제 스프링 처음 써볼려고 하는데 내용을 정말 쉽게 설명해주시네요 ㅋㅋ
    이 설명을 발판으로 스프링 잘 써보겠습니다! ㅋ
  • 다큰아이츄 2012/05/09 16:45 # 삭제 답글

    아이거 글을 읽고나니 감사의 댓글을 달지 아니할수가 없군요 ^^
    감사합니다. 매우 즐겁게 배우는 느낌입니다.
  • d 2012/05/23 20:15 # 삭제 답글

    글이 너무 좋아서 제 블로그에 살짝 옮겼어요 ㅜㅜ

    불편하시면 지울께요 ㅜㅜ 너무 설명이 좋아서 ..
  • springer 2012/11/21 17:15 # 삭제 답글

    매우 잘읽었습니다.
  • 미스터차 2013/02/18 12:40 # 삭제 답글

    이제 막 개발에 발을 딛고 시작하는 뉴비입니다
    앞으로 자주 들러 도움 바뎄습니다
    잘부탁드리겠습니다
  • 하하하하 2013/04/12 16:51 # 삭제 답글

    오늘 하루종일 님 블로그 돌아다니며 보고 있는데 너무 볼수록 빠져듭니다.ㅋㅋ
    너무 좋아요 ~~~~ㅎㅎㅎㅎㅎㅎ
  • 노숙자대통령 2013/05/08 17:56 # 삭제 답글

    완전 최고 이십니다
  • 오렌지사랑 2013/07/23 11:24 # 삭제 답글

    댓글을 거의 안쓰는데 어디에서도 볼수 없는 간결하고 이해하기 쉬운 설명으로 되어 있네요.
    감사합니다.
  • 마지막잎새 2013/11/29 15:40 # 삭제 답글

    설명 참 잘 하시는것 같네요..
    완전 초보가 읽고 대충이해가면 완전 성공입니다.

    열심히 계속 읽고 있습니다.

    감기조심하시구요 화이팅~~~~
  • 쩐다 2014/01/08 15:23 # 삭제 답글

    정말 감사합니다.
    와ㅏㅏㅏㅏㅏㅏ 3일간 구글링 통해 스프링 프레임워크에 대해서
    찾아봤는데 최고로 쉽게 설명해주신 것 같습니다. 많은 것 얻고 갑니다~
  • 애니타임 2014/05/07 14:51 # 삭제 답글

    Ansi C 개발하다 Java 로 넘어가는 사람인데
    초반, 중반까지는 이해가 되지만 후반부는 역시나 어렵네요.

    C/C++ 과 소스를 비교하면서
    C/C++ 에서는 이게 힘들지만
    Java Spring 에서는 이걸 신경 안 써도 된다.

    이런 형태의 설명이 있으면 이해가 가기 쉬울듯 합니다.
  • 이불 2014/05/17 09:08 # 삭제 답글

    나 참... 뭐 이렇게 황당무계하게 은하를 놀래킬 정도의 멋진 블로그가 있을 수가 있단 말인가요?

    저도 한 달 가까이 되어가는데, Spring을 봄으로 이해해야 하는 지, 연습장 끼우는 플라스틱 스프링을 말하는 건지도 모르겠는데...ㅜㅜ

    당장 제 주변 지인들에게 목숨걸고 이 블로그 보라고 해야겠습니다.

    언제고 제가 꼭 한 번 뵙고, 싸인이라도 받아야겠어요.

    제가 김덕수 선생 말고는 싸인이라는 걸 아무리 유명한 사람이라도 받아본 적이 없는데...

    후덜덜한 연예인과 학계의 유명인, 심지어 도올선생님이랑 법륜 스님 같은 분들한테서도요...
  • 치지닝 2014/07/29 10:44 # 삭제 답글

    진짜 설명 잘하시는 거 같아요 ㅠㅠ
    스프링 개념잡기 너무 힘든 거 같은데 다시 마음잡고 공부할 수 있을 것 같습니다.
    지금부터 계속 이 블로그에 있는 글 정독하려구요 ^^
    감사합니다!
  • 아라한사 2014/08/05 10:43 # 삭제 답글

    설명을 잘 하시는 것같습니다. 잘 읽고 갑니다 :)
  • ㅇㄹ 2014/09/04 17:11 # 삭제 답글

    컨테이너 보고 빵 터졌네요 ㅋㅋㅋㅋ 정말 좋은 설명 감사합니다!
  • 건조기 2014/12/23 13:42 # 삭제 답글

    학원에서 이제 막 스프링들어가서 맨붕이었는데 이해가 쉽게 잘 풀어써놓으신거 같아요.

    계속 블로그 참조하면서 공부해야겠습니다^^
  • jinmu 2014/12/24 16:22 # 삭제 답글

    스프링을 구글 형에게 물어보면서 항상 답답한 마음을 가지고 머리싸메고 있었는데,
    이 블로그 글을 보고 속이 탁 트이는 느낌입니다!
    공부하는데 졸리지도 않고 오히려 글을 읽는 재미가 있네요!!
    좋은 글 감사합니다!
  • 개쩜.. 2015/03/31 10:08 # 삭제 답글

    원래 댓글 안남기는데 설명 진짜 개쩌네용.
  • rkdgusrnrl 2015/06/09 11:43 # 삭제 답글

    정말 잘 설명하지 않았나 싶습니다. 내용도 위트 있구
    너무 많이들었는데 이해돼지 않았던 컨테이너의 개념도 좀더 명확히 잡혔고
    게다가 덕분에 StrategyPattern의 이해에 도 많이 도움이 되었습니다.
    Spring을 하기 전에 Action이 라는 interface(Strategy 인터페이스의 역확)를 만들고
    이를 구현한 구현체를 ActionFactory 라는 클래스에서 생성해 리턴해주는(컨테이너 같은 클래스)
    에 대한 통합적인 이해를 돕는 글이여 좀 길게 댓글 답니다.

    좋은 글 감사합니다.
  • rkdgusrnrl 2015/06/09 11:43 # 삭제 답글

    정말 잘 설명하지 않았나 싶습니다. 내용도 위트 있구
    너무 많이들었는데 이해돼지 않았던 컨테이너의 개념도 좀더 명확히 잡혔고
    게다가 덕분에 StrategyPattern의 이해에 도 많이 도움이 되었습니다.
    Spring을 하기 전에 Action이 라는 interface(Strategy 인터페이스의 역확)를 만들고
    이를 구현한 구현체를 ActionFactory 라는 클래스에서 생성해 리턴해주는(컨테이너 같은 클래스)
    에 대한 통합적인 이해를 돕는 글이여 좀 길게 댓글 답니다.

    좋은 글 감사합니다.
  • 감사합니다. 2015/06/15 14:28 # 삭제 답글

    이럴수가 어떻게 이렇게 쉽게 설명을 하실 수 있는건지!!!!!!
    감사합니다!!! 정말루!!
  • 감사합니다. 2015/06/15 14:28 # 삭제 답글

    이럴수가 어떻게 이렇게 쉽게 설명을 하실 수 있는건지!!!!!!
    감사합니다!!! 정말루!!
  • 감사합니다. 2015/06/15 14:28 # 삭제 답글

    이럴수가 어떻게 이렇게 쉽게 설명을 하실 수 있는건지!!!!!!
    감사합니다!!! 정말루!!
  • 감사합니다. 2015/06/15 14:28 # 삭제 답글

    이럴수가 어떻게 이렇게 쉽게 설명을 하실 수 있는건지!!!!!!
    감사합니다!!! 정말루!!
  • 와 대박! 2015/10/19 13:43 # 삭제 답글

    진짜 설명 잘 해주셔서 감사드립니다. 책보고 여러가지 봤는데 이것처럼 쉽고 간결하게 설명이 되있는지 허허허... 강의 감사드립니다.
  • ladybrown 2015/12/18 12:31 # 삭제 답글

    설명이 정말 최고입니다. 정말 감사합니다. 이해가 쉽게 정말 잘 풀어 설명해주셔서 공부하기가 너무 도움됩니다.
  • 광아리 2015/12/19 15:44 # 삭제 답글

    설명 정말 잘해주시네요 한번에 이해가 갔습니다.
    감사합니다.~
  • 무더위 2016/02/11 20:31 # 삭제 답글

    설명이 정말 제 머리에 쏙쏙 잘 들어오네요. 작성자님의 필력에 찬사를 보냅니다.
    앞으로 읽게될 작성자님의 글을 생각하니 신이날 정도에요. 잘보고있습니다!!
  • mmm 2016/05/11 20:53 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:53 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:53 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:53 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:53 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:53 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:53 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:53 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:54 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:54 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:54 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:54 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:54 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:54 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:54 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • mmm 2016/05/11 20:54 # 삭제 답글

    글이 설명이 잘되있어서 출처밝히고 블로그에 옮겼습니다ㅠㅠ혹시 안된다면 말씀해주세요 지우겠습니다
  • 꾸샤 2018/02/01 18:17 # 삭제 답글

    이 글은 정말 최고의 글임에 틀림없어요!

    아는 후배들에게 소개해 줄때마다 보게되네요.

    "목에 힘을 좀 빼고 솔직히 말하자면 살다살다 한글로 번역까지 했는데 이해 못할 말이 튀어나올 줄은 몰랐다"

    이 부분은 정말.....환상적인 필력이십니다.
  • 꾸샤 2018/02/02 09:55 # 삭제 답글

    아래 덧글 올리기 버튼 한번만 살짝 누르고 새로고침 해보세요.
    10번 정도 눌렀더니 10번이 올라갔네요 -_-;
    다음 댓글 쓰실분은 참고하세요 ㅎㅎ
  • zooooou 2018/03/22 17:54 # 삭제 답글

    이런 좋은 글이라니..

    감사합니다. 꾸벅
  • bnitech 2018/04/11 13:34 # 삭제 답글

    와 ㅋㅋㅋ 대단 하십니다!

    몇번을 봐도 이해하기 힘들었던, 컨테이너, IOC, DI 에 대해서 쉽게 예를 들어서 설명해 주시니 너무 좋았습니다.

    정말 좋은 글인거 같습니다.
댓글 입력 영역