자바 개발자 특히 웹개발자로 일을 하기 위해선 반드시 알아야 할 개념이 있습니다.
Spring 과 Maven 입니다.
Spring 의 개념을 인터넷에서 찾아보면 빠지지 않고 등장하는 말이 있습니다
“
스프링이란 어떤 것이다라고 한마디로 정의하기는 쉽지 않다. 스프링에 대해 가장 잘 알려진 정의는 이렇다.
자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크
“
저도 저 말을 듣고 이해할 뿐이지 모르는 사람에서 설명을 하라고 한다면 도저히 이해시킬 자신이 없습니다.
단 ‘프레임워크’ 라는 단어는 기억하셨으면 좋겠습니다.
그냥 제 식대로 예를 들어가며 설명을 해 보겠습니다.
만약 당신이 아무것도 없는 상태에서 목재 가구를 만든다고 생각해 봅시다.
우선 설계를 해야겠죠
가로 몇미터 세로 몇미터짜리 나무 판자 몇 개를 이용하여
어떤 모양으로, 어떤 크기로, 어떤 기능을 할 지
못은 몇 개가 필요하고 망치, 톱 등 어떤 공구가 필요한 지
하나부터 열까지 다 정해야 합니다.
여차저차해서 다 정하고 나면
나무부터 구해야겠죠
공구점에가서 필요한 공구를 산 다음 숲으로 나무를 베러 갑니다.
원하는 크기의 나무가 나올 때까지 나무를 찾아다닌 뒤 나무를 베고 그 나무를 원하는 크기로 다시 가공해야합니다.
저는 여기까지 오기 전에 진작에 가구 만드는걸 포기했을 것 같습니다.
그런데 이 때 이케아 매장이 근처에 생겼습니다.
이케아에 가 보니 내가 필요한 가구가 종류별로 크기별로 조립만 하면 가구를 만들 수 있도록
가공된 제품을 팔고 있습니다.
저는 필요한 제품을 사서 조립만 하면 되겠죠
이렇게 내가 필요한 개발 환경을 편하게 제공해 주어서 나는 만드는 데에만 집중할 수 있도록 해주는 것이
‘스프링 프레임워크’ 입니다.
물론 비유가 좀 잘못됐다고 생각하시는 분들도 있으실 겁니다.
이케아에서 파는 제품은 내가 원하는 대로 만드는 것이 아니라 정해진 대로만 만들어야 하기 때문입니다.
음 그렇다면 다른 예를 들어보겠습니다.
Powerpoint로 발표자료를 만들 때
배경색, 글씨체, 크기, 그림, 그라데이션 애니메이션 등등
하나하나 다 처음부터 만드시는 분들은 거의 없으실 겁니다.
대부분 인터넷에서 무료로 베포하거나 혹은 판매하는 템플릿을 다운받아서 사용하신 적이 있으실 겁니다.
이 템플릿을 스프링 프레임워크라고 생각하시면 될 것 같습니다.
템플릿을 이용하면 디자인에 들일 시간과 노력을
발표 자료에 양과 질에 더 투자할 수 있으니까요
여기까지가 대략적인 스프링의 개념에 관한 간단한 비유적 설명이었습니다.
그렇다면 메이븐은 어떻게 설명할 수 있을까요?
메이븐은 한마디로 아이언맨에게 자비스 같은 존재라고 할 수 있습니다.
토니스타크가 뭔개 개발을 할 때, 혹은 전투를 할 때
자비스에게 수시로 뭔가필요한 것을 부탁하면
자비스는 그자리에서 바로바로 토니스타크가 필요로 하는 무언가를 제공해 주지요
자바로 무언가 개발을 할 때 모든 기능(함수라고 불리는)들을 바로 쓸 수 있는 것은 아닙니다.
그때그때 필요한 API 혹은 라이브러리들을 찾아서 import 시켜주고 build 시켜주어야 하지요
그런데 이 때 내가 필요로 하는 기능들을 하나하나 필요할 때마다 찾아서 빌드를 시켜준다면
아마 아이언맨은 아직까지 개발이 되지 않았을 지도 모릅니다.
이렇게 pom.xml 이라는 파일에 내가 필요한 라이브러리들을 기술하기만 하면
알아서 웹상에서 찾아서 가져와 프로젝트에 포함시키고 빌드시켜주는 것이 바로 메이븐 입니다.
여기까지가 스프링과 메이븐에 관한 아주 간단하고 비유적인 개념 설명이었습니다.
좀 비전문적일 순 있지만 초보분들이 어떻게 하면 쉽게 이해할 수 있을까 하는 관점에서 풀어쓰게 되었는데
혹시 저와 생각이 다르시다거나 태클을 거실 부분들이 있다면 언제든지 댓글 달아주세요.
그럼 다음 포스팅에서는 제가 공부한
스프링과 메이븐의 기본 설정 방법을 알려드리겠습니다.
긴 글 읽어주셔서 감사합니다.
(- -)(_ _)
'개발 > 웹개발 기본가이드' 카테고리의 다른 글
Eclipse Dynamic Web Project로 Spring Maven 프로젝트 만들기 (8) | 2020.02.26 |
---|---|
STS (Spring Tool suite 4) 와 egovframework 사용하기 (0) | 2019.12.24 |
Jstl 변수 자바스크립트로 받아와서 사용하기 (0) | 2019.07.24 |
Mybatis Sqlmapper $ 와 #의 차이 (0) | 2019.07.05 |
GIT 과 SVN의 개념 및 장단점 형상관리, 버전관리 (0) | 2019.05.02 |