Spring Framework : 개발환경 세팅

Beautify.log·2021년 12월 27일
0

Spring Framework

목록 보기
1/2
post-thumbnail

이제까지 우리는 자바와 오라클 DB를 통해 백엔드 프로그래밍의 본질에 대해 살펴봤습니다.

클라이언트 화면을 구성하는데 순수 HTML, CSS, JavaScript로만 페이지를 구성할 때 코드가 복잡해지거나 렌더링의 효율이 낮을 수 있다는 점에 근거해서 엄청난 양의 데이터를 보다 빠르게 렌더링하기 위해서 React나 Vue 같은 라이브러리나 프레임워크를 사용합니다.

자바의 경우라면 개발 과정에서 발생할 수 있는 문제점을 사전에 예측하고 그러한 문제점을 사전에 커버하기 위해 개발자는 디자인패턴을 사용합니다.

그러나 디자인패턴으로 프로그램의 성능이 저하되거나 하는 또다른 문제가 발생할 수 있어 이를 단순화시켜줄 수 있는 도구가 필요했습니다. 그래서 스프링이라는 프레임워크가 등장하게 되었고 이에 대한 불편함을 더욱 개선한 것이 스프링 부트라는 것입니다.

우선 우리나라의 전자정부 프레임워크 등에서는 스프링부트는 아직까지 거의 사용되고 있지 않으며 스프링 프레임워크를 여전히 사용하고 있습니다. 안정성을 이유로 그런다고 하는데 사실 스프링 프레임워크는 전자정부 프레임워크를 제외하면 거의 사용되지 않고 대부분 스프링 부트로 많이 전환된 실정입니다.

스프링 부트를 진행하기 전에 어떤 불편함 때문에 스프링 프레임워크의 어떤 점이 불편한지 보기 위해서 스프링 프레임워크를 먼저 소개합니다.

처음 과정은 어려울 수 있으나 이는 자바 프로그래밍을 단순화한 것이기 때문에 간단하다고 생각하면서 보시면 좋을 것 같습니다.

그럼 시작하겠습니다


서버와 클라이언트의 상호작용


TCP 서버 개념

보통 서버라고 하면 클라이언트의 요청(request)을 처리하여 결과를 다시 클라이언트로 응답(response)을 보여주는 기능을 한다고 알고 있습니다.

서버는 사용자(클라이언트)의 행동을 예측할 수 없기 때문에 서버 내부에서 스레드(Thread)가 계속 돌며 대기하고 있고, 클라이언트의 요청이 있을 때마다 응답을 보여주는 방식입니다.

카카오톡을 보낸다고 가정했을 때 서버는 어떤 사용자가 언제 다른 사람에게 카카오톡을 보낼 지 예측할 수 없으므로 스레드를 계속 돌리며 대기하고 있다가 어떤 사용자가 친구에게 카카오톡을 보내달라고 요청하면 메시지를 전송한 결과를 보낸사람과 받는 사람에게 각각 보여줍니다.

이처럼 서버는 기본적으로 클라이언트의 요청에 대한 응답을 보여주는 것이며 서버와 클라이언트는 상호작용 한다고 할 수 있습니다.

Web 서버 개념

우리가 브라우저를 통해 네이버 홈페이지에 접속하고 싶을 때 어떻게 하나요? 바로 브라우저의 주소입력란에 https://www.naver.com 이라고 입력하고 엔터키를 누르거나 이동버튼을 누릅니다.

이 때 https://www.naver.comhttps라는 하이퍼 텍스트 전송 규약에 맞춰 naver.com이라는 페이지의 주소를 입력해 해당 페이지의 html문서를 보여달라고 요청하는 것입니다.

다시 말해서 www.naver.com은 IP주소와 같은 역할을 하며 대역폭에 따라 포트번호를 자동 부여해줍니다.

집에 비교해보자면 우리가 거주하고 있는 집의 주소가 전부 다르듯이 서버나 PC가 가지고 있는 IP주소는 모두 다릅니다.

그리고 집이 몇개의 방으로 이루어져 있듯이 각 IP주소에도 포트번호라는 것이 존재하는데 이 포트번호가 방의 역할을 합니다.

그러니까 IP주소는 외부 대 외부의 개념이 되고 포트 번호는 특정 IP안의 공간이므로 내부적 개념이 됩니다.

웹서버도 마찬가지로 웹브라우저라는 클라이언트의 요청이 있을 때 서버가 이를 응답으로 보여줍니다.

Web Application System(WAS)안에 웹 서버가 존재하고 여기에는 컨테이너라는 것도 함께 존재합니다. 물론 스레드도 같이 있지요.

WAS 내에 있는 컨테이너가 데이터데이스에 접근하고 동적 처리를 통해 웹 서버에 내용을 전달합니다. 웹 서버는 컨테이너로부터 응답을 받아서 이를 다시 클라이언트에 돌려줍니다.


Spring Framework 소개


스프링 프레임워크란?

스프링 프레임워크는 피보탈 소프트웨어에서 개발한 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크 입니다.

동적인 웹 페이지를 개발하는데 좋은 도구로서 평가받았으며(과거형), 현재 대한민국의 공공기관 웹 서비스 개발시 사용되는 전자정부 프레임워크의 표준 기술입니다.


Spring Framework 개발환경 세팅


저는 macOS를 사용하고 있고, IDE는 인텔리제이를 씁니다. 이클립스가 개발사에서 유지보수를 엄청 섬세하게 하진 않는 것 같더라고요. 에러가 나지 않아야할 곳에서 에러가 난다든지, UI도 직관적이지 못한 것 같아서 인텔리제이를 쓰고 있습니다. 그리고 macOS에서 더 잘 돌아가는 것 같더라고요.

여튼 각설하고 개발환경부터 빠르게 세팅해보겠습니다.

인텔리제이를 열어서 새 프로젝트 만들기

인텔리제이를 열어서 오른쪽 위의 새 프로젝트(New Project)를 눌러줍니다.

좌측에 보시면 Maven이라는 모듈을 선택해주시고 프로젝트 SDK를 맞춰줍니다.

저는 JAVA_HOME이 AdoptOpenJDK 1.8.0으로 되어있기 때문에 자동으로 세팅되네요.

아래 archetype 어찌구를 체크를 해제하고 다음으로 넘어갑니다.

JAVA_HOME 디렉터리 설정에 관한 매뉴얼은 여기를 참조해 주세요.

다음으로 넘어가면 이름과 경로를 설정하는 화면이 나옵니다. 이름을 대충 지어주시면 아티펙트 좌표의 아티펙트 아이디가 자동으로 변경됩니다.

그룹ID는 보통 URL을 거꾸로 뒤집어놓은 모양입니다.

완료를 눌러줍니다.

그러면 새 프로젝트가 열리게 됩니다.

프레임워크 지원 추가하기

프로젝트 디렉터리에 마우스 우클릭하면 두번째에 프레임워크 지원 추가 메뉴가 있습니다. 눌러줍시다.

그러면 이렇게 프레임워크를 추가할 수 있게 화면이 나오는데 아래쪽으로 좀 내려서 Spring MVC를 체크하고 전역 파일로 저장되어 있다면 라이브러리 사용을 누르시고 처음 사용이시라면 다운로드에 체크하고 확인을 눌러주세요.

구성에 들어가시면 버전을 다르게 할 수 있습니다.

그리고 뭔가 엄청난 일이 생길겁니다.

보시면 lib 디렉터리 안에 알수 없는 파일들이 잔뜩 생겨있습니다.

이게 스프링 프레임워크를 사용하기 위해 필요한 파일들을 받아준 것입니다.

패싯 재지정하기

⚠️ 지금부터는 다소 복잡해보일 수 있으나 틀어지게되면 파일이 꼬여버리기 때문에 주의를 기울여야 합니다.

src 디렉터리와 web 디렉터리를 펼쳐보면 이렇게 생긴 것들이 들어있습니다.

여기서 어떤 작업을 해 줄 것이냐면 web 디렉터리를 webapp으로 이름을 바꿔주고, src 디렉터리 안에 넣어줄겁니다.

이름을 바꾸려면 web 디렉터리에 마우스 우클릭 하고 리팩터링에 들어가시면 이름 바꾸기가 있습니다.

이렇게 바꿔주고 리팩터링을 눌러줍니다.

그리고 이름이 바뀐 webapp 디렉터리를 src/main안에 끌어넣기 해줍니다.

그러면 아래와 같은 창이 뜨는데

리팩터링을 눌러줍니다.

자 이제 디렉터리 위치가 바뀌었기 때문에 세팅을 좀 해줘야 하는데요

command + ; 키를 눌러줍니다.

그러면 프로젝트 구조를 설정할 수 있는 창이 뜹니다. 여기에서 좌측의 패싯을 눌러줍니다.

그리고 웹이라고 써있는 녀석을 눌러줍시다.

그러면 우리가 리소스 디렉터리를 바꿨기 때문에 경로가 빨간 글씨로 바뀌어있는 것을 볼 수 있는데요, 이것을 더블클릭해서 원래 경로를 지워주고 src/main/webapp을 추가해줍니다.

그다음 적용을 눌러줍니다.

이제 좌측에 있는 아티팩트로 이동해서

사용가능한 요소에 있는 것을 더블클릭하고 적용, 확인을 눌러 나와줍니다.

톰캣으로 가상서버 구축하기

macOS에는 brew라는 패키지 관리자가 있어서 어지간한 패키지 파일은 쉽게 설치할 수 있습니다.

혹시나 사용중인 mac에 brew가 설치되어 있지 않다면 brew를 설치해주세요.

여기를 누르시면 brew 설치 매뉴얼을 보실 수 있습니다.

설치가 완료 되었다면 터미널을 열고 brew를 업데이트 해줍니다.

그리고 brew search tomcat을 입력하고 엔터를 누르면 설치할 수 있는 톰캣의 버전이 나옵니다

저는 브류에서 제공하는 최신버전인 9버전을 설치해주었습니다.

brew install tomcat으로 설치해줍니다.

설치가 완료되었다면 정상 설치 되었는지 brew list로 확인할 수 있습니다.

자 그러면 인텔리제이로 돌아와서 상단의 구성추가를 눌러줍니다.

실행/디버그 구성이 열리면 +버튼을 눌러주세요.

조금 내리다보면 Tomcat 서버가 보입니다. 여기서 로컬을 눌러주세요.

저는 이미 세팅이 되어있기 때문에 이것저것 칸에 뭐라고 쓰여있는데요, 처음 설정하시는 경우이기 때문에 우측의 구성 버튼을 눌러줍니다.

여기에서 플러스 버튼을 눌러주고 톰캣 홈과 기본 디렉터리를 입력해주면 됩니다.

두개의 경로는 brew 폴더에서 찾을 수 있습니다. 터미널에 brew config를 입력하면 brew로 설치했을 때 어떤 경로에 설치되는지 나옵니다. 그 경로를 찾아가서 Tomcat의 디렉터리러 접근하여 libexec까지의 경로를 가져오시면 됩니다.

이런식으로 작성해주고 확인을 눌러줍니다.

저는 9000번 포트로 수정해줬기 때문에 9000번 포트를 사용했습니다.

밑에 보시면 배포로 표시된 아티펙트가 없다고 나오는데 수정 버튼을 눌러줍시다.

아티펙터 눌러주고 밑에 애플리케이션 컨텍스트를 /로 지정해줍니다.

적용, 확인을 눌러주면 톰캣이 활성화 됩니다.

실행을 누르면 localhost:포트번호에 예쁘게 출력되는 것을 볼 수 있습니다.


profile
tried ? drinkCoffee : keepGoing;

0개의 댓글