개발/코딩자율학습단

[코딩자율학습단 스프링부트] 1일차 - 스프링부트 시작하기

codesparkling 2025. 4. 10. 13:50

스프링부트 시작하기

스프링부트란

스프링부트는 자바 웹 프로그램을 더 쉽고 빠르게 만들기 위한 도구이다.
스프링을 개선해서 환경 설정을 간소화하고 WAS를 내장하여 jar로 쉽게 배포할 수 있도록 도와준다.

스프링부트 개발 환경 설정하기

스프링부트를 사용하려면 먼저 JDK를 설치해야 한다.
Java로 코드를 작성하고 컴파일하고 실행시키려면 Java가 설치되어야 하기 때문이다.
거기에 IDE를 설치한다.
인텔리제이를 써도 되고, 비주얼스튜디오 코드나 이클립스를 사용해도 된다.
나는 PC에는 인텔리제이, 노트북에는 vscode를 이미 설치해두었다.
자동완성 같은 개발 편의성면에서는 프로젝트 자체를 메모리에 모두 올려서 사용하는 인텔리제이가 좋다. 그러나 하드웨어 성능을 고려하자. 노트북은 메모리가 적어서 vscode로 편집만 하는 것도 나쁘지 않다.

JDK 설치하기

이전에 사용하던 JDK는 11버전이다. 스프링부터 3버전 이후는 JDK 17 이상만 지원하기에 새로 설치해야 한다.


다음 JDK 다운로드 링크로 접속하자.


내 노트북은 윈도우를 사용하고 있고 x64 아키텍처이다. 각자 OS와 하드웨어 아키텍처에 맞는 부분으로 설정하고 다운받으면 된다.

msi 파일을 다운 받고 실행시켜서 설치를 완료하자.


설치를 완료하면 다음과 같은 경로가 만들어진다.




설치가 제대로 되었는지 확인해보자. cmd나 파워셸에서 java --version 명령을 입력하고 설치한 버전이 출력되는지 확인하면 된다.

스프링부트 프로젝트 만들기

Spring Initializer에 접속하자. 다음과 같이 설정해준다.



Spring Boot 버전에 대한 내용은 날짜에 따라 다르기 때문에 안정화 버전만 고르면 된다.(SNAPSHOT이 아닌 버전)
그리고 Artifact는 프로젝트 이름을 설정하는 부분이기에 책에서 나온대로 firstproject 로 설정해주자.



다음으로는 dependency를 설정해야 한다. 스프링부트 프로젝트에 필요한 도구를 가져오는 역할을 하며 Spring Web, H2 DB, Mustache, Spring Data JPA 4가지를 추가하자.
(Mustache 대신 Thymeleaf를 사용해도 된다. 나도 예전에 김영한님 강의를 수강한 적이 있어서 thymeleaf가 더 눈에 익지만, 부스트캠프 활동을 하는 동안 Node 환경에 더 익숙해져서 다 까먹었다. 그래서 책이 추천하는 대로 mustache를 사용할 것이다.)


준비가 끝났으면 Generate를 눌러서 프로젝트를 다운받고 압축을 풀어보자.





이런 화면이 나오는데, 각자 설치한 IDE로 열기를 선택하면 프로젝트를 열 수 있다.


메인 메서드를 실행시켜서 localhost:8080으로 요청을 보내보자. 그러면 위의 사진과 같은 페이지가 출력된다.
현재는 HTML을 작성해놓지 않아서 페이지가 없는 것으로 나오기에 404 코드가 반환되는 것이다. (정상적으로 애플리케이션이 동작 중이다.)

웹 서비스의 동작 원리 이해하기

클라이언트와 서버

웹은 클라이언트 - 서버 구조를 사용한다.
웹 서비스는 클라이언트의 요청에 따른 서버의 응답으로 동작한다.
쉽게 생각하면 식당과 완전히 똑같다.
손님(클라이언트)는 웨이터(서버)에게 주문판을 보고 어떤 메뉴를 달라고 요청한다.
이 때, 웨이터는 주문을 받고 음식(요청에 대한 결과, 응답)이 나오면 손님에게 그 음식을 가져다 준다.
그 응답은 JSON 데이터가 될 수도 있고, 어떤 웹 페이지가 될 수도 있고, 에러에 대한 응답일 수도 있다.


Node.js의 Express를 기반으로 하는 애플리케이션들은 포트가 3000번으로 세팅되어 있고 Spring의 Tomcat은 8080으로 세팅된다. 이 값들은 개발자가 임의로 바꿀 수 있다. (기본 세팅이 그렇다는 말이다.)

localhost:8080/hello.html의 의미

  • localhost
    • 127.0.0.1의 IP 주소를 의미하며, 이것은 내 컴퓨터를 의미한다.
      다른 말로 루프백이라고 부르기도 한다.
  • 8080
    • 포트 번호를 의미한다.
    • 포트는 내 컴퓨터의 어떤 애플리케이션과 연결되는지 체크하기 위해 사용한다.
      추상적으로 예를 들어보면, 내 컴퓨터는 여러 회사가 있는 건물과 같다.
      그 건물 내에서 A라는 회사가 8080호에 있다고 가정하자.
      그러면 어떤 사람이 A 회사에 접근하기 위해서는 어떻게 해야 할까?
      8080호에 초대를 받았다고 경비실에 이야기를 하고 들어가야 할 것이다.
      그런 것처럼 해당 애플리케이션에 접근하기 위해 사용하는 것이 포트이다.
    • 보안을 위해 어떤 포트는 접근이 불가능하도록 설정되어 있을 수도 있다.
  • hello.html
    • 서버에 요청하는 파일을 의미한다.
      소제목에 해당하는 url을 접속하면 스프링 애플리케이션에 존재하는 hello.html을 주세요 라는 의미를 가지게 된다.
    • 스프링부트는 src/main/resources/static 디렉토리에 존재하는 hello.html을 찾아서 클라이언트에게 응답한다.

단어 정리

  • JDK
    • Java Development Kit, 자바 개발 도구
    • 자바 코드 컴파일과 실행을 담당함.

참고 자료

https://developerkkyu37.tistory.com/79