-

[스프링 부트 Step4] - 빌드와 배포 그리고 스프링 웹 개발 기초 본문

백엔드 기술 정리/스프링 부트

[스프링 부트 Step4] - 빌드와 배포 그리고 스프링 웹 개발 기초

흣차 2021. 12. 11. 02:27
728x90
반응형

이번엔 본격적으로 빌드를 해볼 것입니다.

콘솔창을 킵니다. (cmd창)

그리고 cd/를 입력하여 C드라이브 (프로젝트를 만들었던 위치)로 이동합니다.

원래 cd/ 라고 치시면 드라이브 밖으로 점점 나가지고

cd "폴더명" 이렇게 치시면 해당 폴더 안으로 들어갑니다.

저는 C드라이브의 workspace 폴더의 hello-project라고 입력하여 해당 폴더로 들어갔습니다.

이후 gradlew build라고 입력합니다.

만약 입력안되시면 java - version이라고 입력해보세요. 자바11밑으로는 아마 안될거에요.

꼭 자바11까지 설치하고 기존 자바는 삭제한 뒤, 시스템 환경 변수 편집에서 Path를 자바11의 bin폴더로 설정해주셔야 됩니다. (검색하면 전부 나옵니다. -> 자바 환경 변수 설정 검색 해보세요)

이후 cd build라고 입력하시고 build폴더 안으로 들어갑니다.

아마 여러 폴더가 생겼을건데, 실제로 폴더 안을 보시면 

이렇게 있을텐데, 위에있는 jar파일을 cmd창에서 실행해도 그대로 서버가 가동이 됩니다.

꼭 기존에 있던 IntelliJ를 끄시고 하셔야 합니다. 안그러면 오류날수도 있어요 서버를 2개 키는거라서..

이 방법을 해보는 이유는 간단합니다.

여러분이 서버를 배포하고 싶으실 때 이 파일을 복붙해서 넣어주시고 jar파일을 실행을 시키면 됩니다.

그러면 서버에서도 스프링이 동작을 하게됩니다.

굉장히 편리하죠??? 

언제까지고 개발을 할 때 이클립스나 IntelliJ로 구동하고 할 수는 없기 때문에 cmd창을 통해 직접 실행도 한 번 해봤습니다.

 

그럼 다음으로 스프링 웹 개발 기초에 대해 알아보겠습니다.

웹을 개발한다는건 크게 3가지로 나눌 수 있습니다.

  • 정적 컨텐츠
  • MVC와 템플릿 엔진
  • API

이전에도 정적 컨텐츠에 대해 다루었습니다.

정적컨텐츠란 말 그대로 서버에서 하는 것 없이 파일을 그대로 웹 브라우저에 내려주는 것입니다.

그리고 두번째로 MVC와 템플릿 엔진은 가장 많이 하는 방식입니다.

이를테면 JSP, PHP이런거 들어보셨을 거에요. HTML을 그냥 주는 것이 아니라 어느정도 프로그래밍을 해서 동적인 상태로 바꾼 뒤에 Html을 내려주는 방식입니다. 

이런걸 템플릿 엔진이라고 하고 그걸 위해 Controller, 이전에 봤던 Model, 그리고 뛰웠던 화면 이 세가지를 합쳐서 Model-View-Controller라고 해서 MVC라고 부릅니다.

요즘에는 이 패턴으로 개발을 많이 하는 추세입니다.

정적 컨텐츠와 차이점이 존재하지요??

정적컨텐츠는 파일을 그대로 화면에 출력하는 것이고 MVC와 템플릿 엔진은 서버에서 변형을 해서 Html을 바꾸어서 내려주는 방식이라고 이해하시면 되겠습니다.

그리고 API는 안드로이드나 아이폰을 개발해야할 땐 과거에는 XML도 썼었는데 요즘은 JSON이란 데이터 포맷으로 내립니다. 그래서 JSON이란 데이터 포맷으로 데이터를 클라이언트에게 전달하는 방식이 API방식이라고 일컫습니다.

또 요즘엔 vue나 react를 쓸 때에도 api로 데이터만 내려주면 화면은 클라이언트가 알아서 그리고 정리하기도 합니다.

또한 서버끼리 통신할 때에는 html파일을 주고받을 필요가 없기 때문에 데이터만 주고 받을 때를 api방식이라고 정의합니다.

이번 포스팅에선 그러므로 이 세가지를 크게 살펴보겠습니다.

제일 먼저 스프링부트 공식 홈페이지의 정적컨텐츠 문서입니다.

가만 보면 static 폴더 내부에 어떤 파일을 만들었을 때 그 경로에 있는 내용을 서버에 가져다 주는 내용입니다.

쉽게 이해하기 위해 실습해보겠습니다.

static 내부에 hello-static.html을 생성합니다.

그리고 서버를 키시고 localhost:8080/hello-static.html 라고 입력하시면 그대로 이 파일을 실행합니다.

이렇게 뜹니다.

그냥 원하는 파일을 그대로 반환하는 방식이라고 이해할 수 있겠습니다.

어떤 원리로 작용하는지 설명드리겠습니다.

웹 브라우저에 localhost:8080/hello-static.html을 치면 내장 톰캣 서버에 요청을 받게됩니다.

그리고 이런 요청이 왔다는 것을 스프링 컨테이너에 넘깁니다.

근데 스프링은 우선적으로 이 hello-static이라는 컨트롤러가 있는지를 확인합니다.

하지만 저희는 hello-static이라는 컨트롤러는 따로 만들지 않고 오로지 html파일만 만들었습니다.

그래서 2순위로 resources/static/에 파일을 만들어 주셔야 스프링부트가 찾아올 수 있는 것입니다.

감사합니다.

728x90
반응형
Comments