IT/Spring

스프링 프레임워크의 동작원리(Spring 원리)

 

대부분 학원 혹은 독학 으로 스프링 프레임워크를 통해서 게시판을 만드실 거라고 생각합니다

지금부터는 제 경험담입니다만..

전 사실 이게 뭔지도 잘 모르고 자바에 대한 이해도도 부족한데 

그냥 수업시간에 타이핑만 따라치고 그러다보니 게시판이 생기고 그렇구나 그렇구나 하면서

완성된 기능을 보고 감탄만 했습니다.

이렇게 되면 비전공자들은 어떻게 될까요?

CRUD 매트릭스가 뭔지 대충 알기나 하지 혼자서 다시 짜라고 하면 게시판 짜는게 어렵지 않을까요

정말 삽질의 삽질의 삽질을 거듭하다 보니까 도대체 원리도 모르면서 제가 뭐하는 짓인가 싶었습니다.

사실 지금도 잘 모르지만 

지금도 자세하게는 설명 못드리지만 중요한 초보로서의 끄덕끄덕은 공유하고싶어서 올립니다.

일단 

위 그림을 보시고 이해를 하셔야 합니다. 

자 먼저 클라이언트가 url을 통해서 저희가만튼 웹에 접근해서 정보를 요청을 합니다.

그 다음엔 이 DispatcherServlet(디스패처서블릿)이라는 것이 핸들러맵핑을 통해서 컨트롤러에 요청을 보내고

그러면 여러분이 Controller에서 작성한 무슨 reply.do라든지 아니면 write.do 라든지 여러가지로 맵핑이 되겠죠?

그러면 그 맵핑된 곳으로 이동하기 위해서 디스패처서블릿은 view 이름을 찾아서 뷰 리졸버를 통해서 화면을

띄우는 것입니다.

이 정도는 솔직히 공부를 하려고 마음 먹으셨다면 이해하셔야 합니다. 저같은 돌머리도 오래걸렸지만 이해는해냄..ㅠ

 


다음으로 

컨트롤러에 대한 이해를 좀더 높여야 합니다.

저도 아직 한~참 멀었습니다.

게시판 테이블에 대해서 먼저 create 쿼리를 통해서 테이블을 만들어두죠?

그담에 dto를(혹은 vo 의견분분) 통해서 인자값(파라미터)들을 이름붙여주실거에요.

여러분이 게시판에 글을 작성하신다고 하면 우선 일반적으로는 Mybatis를 통해서 

SQL 쿼리문을 작성해 두셨을 겁니다. 

예를 들어보겠습니다.

여러분이 은행 ATM 기기에 '입금'이라는 행위를 하신다는 가정을 한다면

ATM기기 뚜껑을 열고 돈을 넣는것이 SQL에서 Insert 문이라고 생각하시면 되고

DAO가 그 돈을 넣는 손 (DB에 직접 다녀오라고 명령받는 심부름꾼)

Service그 그 '입금'이라는 행위로직 자체라고 생각하시면 편할 것 같아요.

그리고 컨트롤러는 그 과정 전체에 대해서 '입금'이라고 써놓고 매칭하죠?

 

결론적으로 쿼리를 작성하고 그 쿼리에 dao를 통해서 접근하고 dao에게 service가 명령내리고

그 모든 걸 하나로 묶어서 컨트롤러에 인자값들을 받아서 처리하도록 하는 과정이 게시판의 기본 느낌이네요

이상태에서 이제 Tiles 혹은 여러 환경설정들 그리고 메이븐이니 그레이들이니 등등..

여러가지 궁금증은 천천히 해결해나가시면 될것 같아요

그래도 동작원리를 알고 계신다면 (MVC 모델의 작동원리) 좀더 이해해 나가는 과정이 쉬워질 거라고 믿습니다

사실 저도 여러가지 문법적 언어적 문제들을 정확히 이해하지 못하기에 지금

'스프링 입문을 위한 자바 객체 지향의 원리와 이해' 라는 책을 구해서 보고 있습니다.

객체 지향에 대해서 흔히 설명하는 '붕어빵 vs 붕어빵틀' 이 아닌 필자 경험을 녹여낸 세세한 설명을 하려고 노력한

흔적이 느껴지는 책입니다. 그래도 저처럼 완전 비전공자 초보들이 다짜고짜 보기에는 어려울 수 있으니

저는 그 전에 자바 언어 자체에 대한 책을 좀 읽어보시고 나서 이해도를 높이고 그 다음 단계에서 읽어보시길 추천

저도 다음단계의 성장하는 부분을 또 포스팅 해보겠습니다.

이 글에 대해 수정할 점이 있거나 하신분은 언제든 댓글로 지적해주시면 바로 수정하여

올바른 지식을 전달하도록 해보겠습니다.