개발 지식 기록/북스터디

[스프링 부트 핵심 가이드] 04. 스프링 부트 애플리케이션 개발하기

엉망진창좌충우돌 2023. 9. 1. 02:03

본 게시글은 '스프링 부트 핵심 가이드' 책의 내용을 정리한 것입니다.

저자 : 장정우

출판사 : 위키북스


 

4.1 프로젝트 생성

 

4.1.1 인텔리제이 IDEA에서 프로젝트 생성하기

 

 

▶ [New Project] 클릭

 

 [Spring Initailizr] 선택 후 설정

  • Name : 프로젝트의 이름을 설정
  • Location : 프로젝트를 생성할 위치를 설정
  • Language : JVM 상에서 동작하는 언어를 선택
  • Type : 빌드 툴을 선택. Groovy와 Kotlin은 gradle script를 작성할 때 어떤 언어를 사용할지의 차이
  • Group : 이 프로젝트를 정의하는 고유한 식별자 정보인 그룹을 설정
  • Artifact : 세부 프로젝트를 식별하는 정보를 기입. 보통 Name을 변경하면 같은 내용으로 같이 변경된다.
  • Package Name :  Group와 Artifact를 설정하면 자동으로 입력된다.
  • Project SDK : SDK를 설정
  • Java : Java 버전을 설정
  • Packaging : 애플리케이션을 쉽게 배포하고 동작하게 할 파일들의 패키징 옵션

스프링 부트 버전을 선택하고 사용할 의존성을 추가한다. 체크박스에 체크하면 우측에 추가한 내용들이 보인다.

책에서 추가한 의존성은
Lombok
Spring Configuration Processor

Spring Web

 

 추가한 후 Create 클릭

 

※ 스프링 부트 버전은 JDK 버전과 호환 문제가 있을 수 있다. 호환성 찾아보고 문제 없도록 선택하자

Spring Framework 6.1.x JDK 17-23 Spring Boot 3.0 JDK 17, 19
Spring Framework 6.0.x JDK 17-21 Spring Boot 2.3 JDK 9, 11
Spring Framework 5.3.x JDK 8-21 Spring Boot 2.1 JDK 8, 11
Spring Framework 5.2.x JDK 8 - 15 Spring Boot 2.0 JDK 8
Spring Framework 5.1.x JDK 8 - 12 Spring Boot 1.5 JDK 6, 7, 8
Spring Framework 5.0.x JDK 8 - 10 Spring Boot 1.1 JDK 6
Spring Framework 4.3.x JDK 6 -  8 (its official EOL(end-of-life))    

 

※ 책에선 Java 11버전에 Springboot 2.5.6 버전을 사용했으나 생성 시 2.5.6 버전이 안보일 수 있다. 아무 버전이나 선택해서 생성 후 pom.xml에서 버전을 변경한다.

저 부분을 변경한다.

 

4.1.2 스프링 공식 사이트에서 프로젝트 생성하기

 

 https://start.spring.io/ 로 접속한다.

 

▶ 원하는 설정과 의존성 추가 후 GENERATE 클릭

  • Project : 인텔리제이에서 type 선택과 동일. 이 책 실습은 Maven으로 진행된다.
  • Language : JVM 상에서 동작하는 언어를 선택
  • Spring Boot : Spring Boot 버전 선택
  • Group : 이 프로젝트를 정의하는 고유한 식별자 정보인 그룹을 설정
  • Artifact : 세부 프로젝트를 식별하는 정보를 기입. 작성하면 작성 내용이 Name과 Package name에도 적용
  • Name : 프로젝트의 이름을 설정.
  • Description : 프로젝트 설명 입력
  • Package name : Group와 Artifact를 설정하면 자동으로 입력된다.
  • Packaging : 애플리케이션을 쉽게 배포하고 동작하게 할 파일들의 패키징 옵션
  • Java : Java 버전을 설정

▶ GENERATE 버튼 클릭 후 압축 파일을 다운로드 받고 압축을 해제한 후 인텔리제이로 프로젝트 오픈

우측 상단에 OPEN 클릭 후 압축 해제한 폴더를 선택
다음 경고문이 나오면 Trust Project 클릭

 

 

4.2 po.xml(Project Object Model) 살펴보기

 

4.2.1 빌드 관리 도구

빌드 관리 도구는 JVM이나 WAS가 프로젝트를 인식하고 실행할 수 있게 작성한 소스코드와 프로젝트에 사용된 파일들(.xml, .jar, .properties)을 빌드하는 도구이다.

 

4.2.2 메이븐

메이븐은 자바 기반의 프로젝트를 빌드하고 관리하는 데 사용하는 도구이다. pom.xml 파일에 필요한 라이브러리를 추가하면 해당 라이브러리에 필요한 라이브러리까지 함께 내려받아 관리한다. 

 

메이븐의 기능

  • 프로젝트 관리 : 프로젝트 버전과 아티팩트를 관리한다.
  • 빌드 및 패키징 : 의존성을 관리하고 설정된 패키지 형식으로 빌드를 수행한다.
  • 테스트 : 빌드를 수행하기 전에 단위 테스트를 통해 작성된 애플리케이션 코드의 정상 동작 여부를 확인한다.
  • 배포 : 빌드가 완료된 패키지를 원격 저장소에 배포한다.

 

메이븐의 생명주기

메이븐의 기능은 생명주기 순서에 따라 관리되고 동작한다. 메이븐의 생명주기는 크게 기본 생명주기(Default Lifecycle), 클린 생명주기(Clean Lifecycle), 사이트 생명주기(Site Lifecycle)로 구분하고 각 생명주기는 다음과 같은 단계가 존재하며 순차적으로 실행된다.

출처 : https://stackoverflow.com/questions/16205778/what-are-maven-goals-and-phases-and-what-is-their-difference

각 단계는 메이븐에서 제공하는 플러그인이 설정된 목표를 수행하는 방식으로 동작한다. 각 생명주기 단계의 역할은 다음과 같다.

 

클린 생명주기

  • clean : 이전 빌드가 생성한 모든 파일을 제거한다.

기본 생명주기

  • validate : 프로젝트를 빌드하는 데 필요한 모든 정보를 사용할 수 있는지 검토한다.
  • compile : 프로젝트의 소스 코드를 컴파일한다.
  • test : 단위 테스트 프레임워크를 사용해 테스트를 실행한다.
  • package : 컴파일한 코드를 가져와서 JAR 등의 형식으로 패키징을 수행한다.
  • verify : 패키지가 유효하며 일정 기준을 충족하는지 확인한다.
  • install : 프로젝트를 사용하는 데 필요한 패키지를 로컬 저장소에 설치한다.
  • deploy : 프로젝트를 통합 또는 릴리스 환경에서 다른 곳에 공유하기 위해 원격 저장소에 패키지를 복사한다.

사이트 생명주기

  • site : 메이븐의 설정 파일 정보를 기반으로 프로젝트의 문서 사이트를 생성한다.
  • site - deploy : 생성된 사이트 문서를 웹 서버에 배포한다.

 

 

4.3 Hello World 출력하기

 

4.3.1 컨트롤러 작성하기

 

패키지 생성 : 패키지에 우클릭 후 [New] -> [Package]를 선택해 컨트롤러들을 모아놓을 패키지 생성

 

클래스 생성 : 컨트롤러 패키지에 우클릭 후 [New] -> [Java Class]를 선택해 컨트롤러로 사용할 자바 클래스 생성

 

컨트롤러에 포함된 로직에서는 애플리케이션의 사용자 또는 클라이언트가 입력한 값에 대한 응답을 수행한다. 특별한 경우를 제외한 모든 요청은 컨트롤러를 통해 진행되어야 한다. 

데이터를 다루거나 별도의 로직을 처리해야 하는 경우에는 서비스 또는 데이터 액세스 레이어까지 요청을 전달하는 경우가 일반적이다.

 

4.3.2 애플리케이션 실행하기

 

인텔리제이 상단부에 위치한 실행버튼을 누르면 애플리케이션이 실행된다.

하단에 콘솔 탭에서 다음과 같은 실행로그가 출력된다.

8080 포트를 통해 웹서버가 열려있다.

 

4.3.3 웹 브라우저를 통한 동작 테스트

 

애플리케이션 실행 후 설정한 URL 주소에 접속하면 실행 결과 확인 가능하다.

Controller 클래스에 RequestMapping으로 ("/hello")를 작성했으니

웹브라우저에서 'http://localhost:8080/hello'를 입력하면 작성한 내용이 출력됨을 확인할 수 있다.

 

4.3.4 Talend API Tester를 통한 동작 테스트

 

Talend API Tester라는 크롬 확장프로그램을 사용하면 웹 브라우저를 통한 테스트보다 상세한 응답 확인이 가능하다.

설치 후 실행하면 다음과 같은 화면을 볼 수 있다.

Talend API Tester는 HTTP 통신을 테스트하는 프로그램이다. GET, POST, PUT, DELETE 등의 다양한 HTTP 메서드를 설정하고 쿼리와 파라미터를 담아 요청을 보낼 수 있다.

위 화면에서 Method와 HTTP 요청을 보내려는 경로를 설정(https가 기본값이다. http로 변경해야 한다.)하고 Send 버튼을 클릭해 요청을 보내면 하단의 Response에서 결괏값이 출력된다. 

아까와 같이 'http://localhost:8080/hello'를 입력하면 다음과 같이 결과를 받을 수 있다.

Header 정보를 볼 수 있다는 것이 Talend API Tester의 장점이다.