상세 컨텐츠

본문 제목

[스프링3] 4장. 스프링 부트 애플리케이션 개발하기

23-24/Spring 3

by recoday 2023. 10. 13. 10:02

본문

728x90


1. 프로젝트 생성


1.1 인텔리제이 IDEA에서 프로젝트 생성하기
  • 인텔리제이 IDEA의 유료 버전인 얼티밋 버전에서 지원하는 Spring Initializer 기능
  • Spring Initializer 기능은 원래 스프링 공식 사이트에서 제공하는 스프링 부트 프로젝트 생성 기능인데
    얼티밋 버전 인텔리제이 IDEA에도 내장되어 있음

 

1. 인텔리제이 IDEA를 실행하고 사용자 약관 동의 등의 설정을 완료하고 나면 위와 같은 화면이 나옴

    여기서 화면 가운데 있는 [New Project]를 클릭

 


2. 위의 화면과 같이 'Spring Initializer'를 선택하면 설정이 필요한 항목이 나오고 아래와 같이 설정

• Name : 프로젝트의 이름을 설정 (여기서는 'hello'라고 입력)
• Location : 프로젝트를 생성할 위치를 설정
• Language : JVM 상에서 동작하는 언어를 선택 ('Java'를 선택)
• Type : 빌드 툴을 선택 (여기서는 'Maven'을 선택했지만 각자 익숙한 것을 선택해도 괜찮음)
• Group : 프로젝트를 정의하는 고유한 식별자 정보인 그룹을 설정
  (프로젝트를 진행하는데 영향을 주지 않음 / 여기서는 'com.springboot'로 설정)
• Artifact : 세부 프로젝트를 식별하는 정보를 기입 (여기서는 'hello'로 설정)
• Package name : Group과 Aritfact를 설정하면 자동으로 입력됨
• Project SDK : 11 버전으로 설정
• Java : 11 버전으로 설정
• Packaging : 애플리케이션을 쉽게 배포하고 동작하게 할 파일들의 패키징 옵션 (여기서는 'Jar'를 선택)

[스터디 Tip]

더보기

Jar와 War 모두 자바 언어의 툴에서 사용하는 아카이브 파일

애플리케이션의 배포와 동작을 위해 사용되는데, 두 형식의 차이점과 특징을 알아두기 !


프로젝트의 최초 의존성 설정

3. 프로젝트에서 사용할 의존성을 위와 같이 추가

    의존성은 초기에 추가할 수도 있고 개발을 진행하는 중에 추가할 수도 있음


4. 위의 단계를 모두 마치면 인텔리제이 IDEA 우측 하단에 상태 표시줄이 나타나고

    그 사이에 인텔리제이 IDEA가 메이븐(Maven)을 통해 프로젝트를 초기화

    또한 프로젝트에 필요한 의존성을 가저오고 필요한 색인 작업을 수행

    모든 작업이 완료되면 상태 표시줄이 사라지면서 위와 같은 화면이 나타남


1.2 스프링 공식 사이트에서 프로젝트 생성하기
  • 스프링 공식 사이트에는 스프링 부트 프로젝트를 자동으로 만들어주는 서비스가 존재
  • 1.1의 방식과 동일하게 프로젝트를 생성해서 내려받을 수 있음
  • https://start.spring.io/

1. 사이트 방문 후 위와 같이 각 항목들에 대해 설정

• Product : Maven Project
• Language : Java
• Spring Boot : 3.1.4
   (책에서는 2.5.6으로 설정하라고 되어있었지만 현재 2.5.6 버전은 선택할 수가 없어서
     사이트 방문 시 기본값으로 되어있는 3.1.4를 사용했습니다.
     SNAPSHOT 버전은 아직 안정화되지 않은 최신 버전이라서 SNAPSHOT 버전은 피하는 것이 좋을 듯합니다.
• Project Metadata
 - Group : com.springboot
 - Artifact : hello
 - Name : hello
 - Description(자유롭게 서술 가능) : Demo project for Spring Boot
 - Package Name(자동완성) : com.springboot.hello
 - Packaging : Jar
 - Java : 11

2. Dependencies 항목을 채우기 위해 화면 오른쪽의 [ADD DEPENDENCIES ...] 버튼을 클릭 -> 의존성 추가 화면 나타남

    맨 위 검색창을 활용하거나 마우스 스크롤을 내려 아래와 같은 항목을 추가

• Lombok
• Spring Configuration Processor
• Spring Web

3. 모든 옵션을 선택하고 의존성까지 추가했다면

    spring initializr 사이트 하단의 [GENERATE] 버튼을 클릭해 프로젝트를 내려 받기


4. 내려받은 압축 파일을 프로젝트를 진행할 경로로 옮기고 압축을 푼 후 인텔리제이 IDEA를 실행하고 프로젝트 열기

더보기

     +) 외부에서 내려받은 프로젝트를 인텔리제이 IDEA에서 열면 경고 문구가 나타나는 경우가 존재

          아래와 같이 경고 문구가 나온다면 [Trust Project] 버튼을 클릭

 


5. 위의 화면이 나오고 인텔리제이 IDEA 우측 하단에 표시된 진행 사항이 모두 완료되면 정상적으로 프로젝트 이용 가능


2. pom.xml(Project Object Model) 살펴보기
  • pom.xml 파일은 메이븐의 기능을 사용하기 위해 작성하는 파일
  • 이 파일에는 라이브러리, 빌드 등의 정보 및 해당 프로젝트를 관리하는데 필요한 내용이 기술되어있음

2.1 빌드 관리 도구
  • 빌드 관리 도구는 JVM이나 WAS가 프로젝트를 인식하고 실행할 수 있게 우리가 작성한 소스코드와 프로젝트에 사용된 파일들(.xml, .jar, .properties)을 빌드하는 도구
  • 개발 규모가 커질수록 관리할 라이브러리가 많아지고 라이브러리 간 버전 호환성을 체크해야 하는 어려움이 발생하는데, 빌드 관리 도구를 이용하면 이와 같은 문제를 해결할 수 있음

2.2 메이븐
  • 아파치 메이븐은 자바 기반의 프로젝트를 빌드하고 관리하는데 사용하는 도구
  • 초창기 자바 프로젝트의 대표적 관리 도구였던 Ant를 대체하기 위해 개발
  • 메이븐의 가장 큰 특징은 pom.xml 파일에 필요한 라이브러리를 추가하면 해당 라이브러리에 필요한 라이브러리까지 함께 내려받아 관리한다는 점
  • 메이븐의 대표적인 기능
• 프로젝트 관리 : 프로젝트 버전과 아티팩트를 관리
• 빌드 및 패키징 : 의존성을 관리하고 설정된 패키지 형식으로 빌드를 수행
• 테스트 : 빌드를 수행하기 전에 단위 테스트를 통해 작성된 애플리케이션 코드의 정상 동작 여부를 확인
• 배포 : 빌드가 완료된 패키지를 원격 저장소에 배포

 

  • 메이븐의 생명주기
    • 메이븐의 기능은 생명주기에 따라 관리되고 동작
    • 인텔리제이 IDEA에서 생성한 프로젝트의 경우 인텔리제이 IDEA에서 우측에 있는 'Maven' 탭을 클릭하면 메이븐 생명주기 확인 가능
    • 메이븐의 생명주기는 크게 기본 생명주기(Default Lifecycle), 클린 생명주기(Clean Lifecycle), 사이트 생명주기(Site Lifecycle) 3가지로 구분
    • 각 생명주기에는 같은 단계가 존재하며, 특정 단계를 수행하기 위해서는 이전 단계를 마쳐야 함

메이븐 주요 생명주기

  • 각 단계는 메이븐에서 제공하는 플러그인이 설정된 목표(goal)를 수행하는 방식으로 동작
  • 메이븐의 생명주기 단계는 순차적으로 실행되며, 생명주기 단계의 역할을 다음과 같음
클린 생명주기
 • clean : 이전 빌드가 생성한 모든 파일을 제거

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

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

3. Hello World 출력하기
  • 'Hello World'를 출력하는 애플리케이션 만들기

 

3.1 컨트롤러 작성하기

1. 앞에서 생성한 프로젝트에 패키지 생성

1.1) src → main → java → com.springboot.hello 패키지에 마우스 오른쪽 버튼을 클릭한 후
       [New] → [Package]를 눌러 'controller'라는 이름의 하위 패키지를 생성
1.2) 그 다음 'controller' 패키지에 마우스 오른쪽 버튼을 클릭한 후 [New] → [Java Class]를 클릭하고
        HelloController라는 이름의 컨트롤러 생성

+ 컨트롤러?

더보기
  • 컨트롤러에 포함된 로직에서는 애플리케이션의 사용자 또는 클라이언트가 입력한 값에 대한 응답을 수행
  • 특별한 경우를 제외한 모든 요청은 컨트롤러를 통해 진행되어야 함
  • 이번 예제는 컨트롤러 내부에서 모든 로직을 처리했지만 데이터를 다루거나 별도의 로직을 처리해야 하는 경우에는 서비스 또는 데이터 액세스 레이어까지 요청을 전달하는 경우가 일반적

 

2. 컨트롤러 코드 작성하기

package com.springboot.hello.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    
    @RequestMapping("/hello")
    public String hello() {
        return "Hello World";
    }
}

3.2  애플리케이션 실행하기

1. 애플리케이션을 실행하는 방법은 인텔리제이 IDEA 우측 상단부에 위치한 실행 버튼을 누르면 애플리케이션이 실행됨


2. 애플리케이션이 정상적으로 실행되면 IDE 하단의 콘솔(Console) 탭에서 아래와 같이 실행 로그가 출력됨
    8080번 포트를 통해 웹 서버가 열린 것을 로그의 세 번째 줄에서 확인할 수 있음

 

3. 애플리케이션이 올바르게 동작하는지 테스트하는 방법은 다양하지만 다음의 두 가지 방법을 소개함

 


3.3 웹 브라우저를 통한 동작 테스트
  • 웹 브라우저로 스프링 부트가 설정한 URL에 접속하면 간단하게 실행 결과를 확인 가능
  • 아래의 사진과 같이 웹 브라우저의 주소창에 'http://localhost:8080/hello'를 입력하면 Hello World가 출력됨


3.4 Talend API Tester를 통한 동작 테스트
  • 웹 브라우저를 통한 동작 테스트는 간편하지만 상세한 응답을 확인할 수 없다는 단점 존재
  • 따라서 구글 크롬의 확장 프로그램인 Talend API Tester를 사용하면 이 같은 문제 해결 가능
  • Talend API Tester는 HTTP 통신을 테스트하는 프로그램
    • GET, POST, PUT, DELETE 등의 다양한 HTTP 메서드를 설정하고 쿼리(query)와 파라미터(parameter)를 담아 요청을 보낼 수 있음

 

1. 크롬 브라우저의 주소창에 'chrome://extensions/'를 입력하거나 우측 상단의 메뉴 버튼( ⋮ )을 클릭한 후 [도구] → [더보기] → [확장 프로그램]을 선택하면 아래의 사진과 같은 크롬 브라우저에서 사용 중인 확장 프로그램을 볼 수 있음


2. 위의 페이지에서 좌측 상단의 메뉴 버튼을 클릭한 후 맨 아래에 'Chrome 웹 스토어 열기' 항목을 클릭

    그 후 크롬 웹 스토어에서 'Talend API'를 검색하고 'Talend API Tester - Free Edition'을 찾아 [Chrom에 추가] 버튼을

    눌러 설치


3. 크롬 브라우저에서 Talend API Tester를 실행하면 위의 화면이 표시됨

   이 화면에서 HTTP 요청을 보내려는 경로와 메서드를 설정하고 [Send] 버튼을 클릭해 요청을 보내면

   같은 화면 아래 부분에 위치한 'Response' 화면에 결과값이 출력됨


4. 여기에서는 아래 그림과 같이 설정하여 테스트를 진행

    주의할 점은 URL 입력란에 'https'가 기본값으로 설정되어 있는데 이를 http로 변경해야 한다는 점을 유의!!!


5. 위와 같이 설정한 후 테스트를 진행하면 아래와 같은 응답 화면이 출력됨
    앞서 3.3의 웹 브라우저에서 확인했을 때와 마찬가지로 'Hello World'가 정상적으로 출력됨

 Talend API Tester의 장점 HTTP 헤더를 볼 수 있다는 점
 - REST 통신에서는 Body 값뿐만 아니라 헤더에도 값을 추가해서 요청에 필요한 데이터를 담아보내는 경우가 많음

 

Quiz

1. 인텔리제이 IDEA 얼티밋 버전에서는 곧바로 프로젝트를 생성할 수 있는 ( Spring Initalizer )를 제공한다.

2. 스프링 공식 사이트에서 프로젝트를 생성할 시, 추가해야하는 의존성은 ( Lombok, Spring Configuration Processor, Spring Web ) 이다.

3. pom.xml 파일은 ( 메이븐 )의 기능을 사용하기 위해 작성하는 파일로, 라이브러리, 빌드 등의 정보 및 해당 프로젝트를 관리하는데 필요한 내용이 기술되어있다.

4. 메이븐의 생명주기는 크게 ( 기본 생명주기(Default Lifecycle), 클린 생명주기(Clean Lifecycle), 사이트 생명주기(Site Lifecycle) ) 3가지로 구분

5. 애플리케이션 실행하는 방법에는 웹 브라우저를 통한 동작 테스트와 ( Talend API Tester )를 통한 동작 테스트가 있다.

6. Talend API Tester는 ( HTTP 통신 )을 테스트하는 프로그램이다.


[출처] 장정우, 『스프링 부트 핵심가이드 스프링 부트를 활용한 애플리케이션 개발 실무』, 위키북스(2022), p28-54.

 

 

ⓒ 도도

728x90

관련글 더보기