[ZB_BOOK STUDY] 스프링 부트 핵심 가이드 (4)

Dreamer·2024년 3월 31일
0
post-thumbnail

📖 스프링 부트 핵심 가이드

: 스프링 부트를 활용한 애플리케이션 개발 실무


📝 목차

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

4-1. 프로젝트 생성
- 인텔리제이 IDEA에서 프로젝트 생성하기
- 스프링 공식 사이트에서 프로젝트 생성하기

4-2. pom.xml (Project Object Model) 살펴보기
- 빌드 관리 도구
- 메이븐

4-3. Hello World 출력하기
- 컨트롤러 작성하기
- 애플리케이션 실행하기
- 웹 브라우저를 통한 동작 테스트
- Talend API Test를 통한 동작 테스트


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

  • 스프링 부트 애플리케이션을 단계별로 개발하는 과정에서,
    어떤 개발 지식을 습득해야하는지 알아보자!
  • https://github.com/wikibook/springboot
    ↳ 예제 코드 제공

4-1. 프로젝트 생성

: 스프링 부트 프로젝트를 쉽게 만드는 방법 2가지를 소개

① 인텔리제이 IDEA에서 프로젝트 생성하기 (Ultimate ver)

: 인텔리제이 IDEA 얼티밋 버전에서만 가능 (내장된 Spring initializr)
커뮤니티 버전에서는 사용 불가🚫

얼티밋 버전

커뮤니티 버전

얼티밋 버전에서 [New Project] 클릭 - 'Spring initializr' 선택하면 보이는 창

프로젝트 생성

  • Name(이름)
    : 프로젝트 이름을 설정
  • Location(위치)
    : 프로젝트를 생성할 위치 설정
  • Language(언어)
    : JVM 상에서 동작하는 언어를 선택
  • Type(타입)
    : 빌드 툴 선택
  • Group(그룹)
    : 프로젝트를 정의하는 고유 식별자 정보 (프로젝트에 진행하는데 영향❌)
  • Artifact(아티팩트)
    : 세부 프로젝트를 식별하는 정보를 기입
  • Package name(패키지 이름)
    : Group과 Artifact를 설정하면 자동으로 입력⭕
  • JDK
  • Java
  • Packaging(패키지 생성)
    : 애플리케이션을 쉽게 배포 & 동작하게 할 패키징 옵션

다음 단계 - 프로젝트에서 사용할 의존성 추가하기!
의존성은 지금처럼 프로젝트 생성 시 추가할 수 있고,
개발을 진행하는 중에 추가할 수도 있다.

의존성 추가

기본적인 의존성 추가
Lombok
Spring Configuration Processer
Spring Web


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

: 인텔리제이 커뮤니티 버전이 프로젝트 생성하기

⬇️ 스프링 공식 사이트에서 스프링 부트 프로젝트를 자동으로 만들어주는 서비스
https://start.spring.io/

프로젝트 생성

  • Project : 빌드 툴 선택
  • Language : JVM 상에서 동작하는 언어 선택
  • Spring Boot : 버전 선택
  • Project Metadata
    Group : 프로젝트를 정의하는 고유 식별자 정보 (보통 회사 도메인을 넣음)
    Artifact : 프로젝트 이름
    ⬇️ 자동 완성
    Name
    Description (자유롭게 서술 가능)
    Package Name
  • Packaging : 애플리케이션을 쉽게 배포 & 동작하게 할 패키징 옵션 선택
  • Java : 버전 선택

ADD DEPENDENCIES.. 버튼 클릭
의존성 추가

의존성 추가

의존성 추가

GENERATE 버튼 클릭 ➙ 우리가 설정한 압축파일이 생성
프로젝트 생성

+ 프로젝트 구동 시켜보기
1. 프로젝트명.zip 파일 압축 풀기
2. intelliJ 실행
3. Open or Import 클릭
4. build.gradle 파일 선택 후 Open 클릭
5. Open as Project 선택

4-2. pom.xml (Project Object Model) 살펴보기

: pom.xml파일 = 메이븐의 기능을 사용하기 위해 작성하는 파일
이 파일에는 프로젝트를 관리하는 데 필요한 기술이 기술되어 있음

빌드 관리 도구

: JVM이나 WAS가 프로젝트를 인식하고 실행할 수 있게 우리가 작성한 소스코드와 프로젝트에 사용된 파일들을 빌드하는 도구

개발 규모가 커질수록 관리할 라이브러리가 많아지고 라이브러리 간 버전 호환성을 체크해야 하는 어려움 발생 ➙ 빌드 관리 도구로 문제를 해결

메이븐 (아파치 메이븐)

: 초창기 자바 프로젝트의 대표적 관리도구 Ant를 대체하기 위해 개발

  • 특징
    : pom.xml 파일에 필요한 라이브러리를 추가하면 해당 라이브러리에 필요한 라이브러리까지 함께 내려받아 관리

  • 메이븐의 대표 기능

✅ 프로젝트 관리 
: 프로젝트 버전과 아티팩트를 관리

✅빌드 및 패키징 
: 의존성을 관리하고 설정된 패키지 형식으로 빌드를 수행

✅테스트 
: 빌드를 수행하기 전, 단위 테스트를 통해 
작성된 애플리케이션 코드의 정상 동작 여부를 확인

✅배포 
: 빌드가 완료된 패키지를 원격 저장소에 배포
  • 메이븐의 생명주기 (크게 3가지로 구분)
    : 메이븐의 기능은 생명주기 순서에 따라 관리 & 동작
    특정 단계를 수행하기 위해서는 이전 단계를 마쳐야 한다. (순차적으로 실행)

기본 생명주기(Default Lifecycle),
클린 생명주기(Clean Lifecycle),
사이트 생명주기(Site Lifecycle)

메이븐 생명주기

✅ 클린 생명주기
clean 
: 이전 빌드가 생성한 모든 파일을 제거

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

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

⬇️ 메이븐 공식 사이트
https://maven.apache.org/


4-3. Hello World 출력하기

: "Hello World!"를 출력하는 애플리케이션 만들어 보기

컨트롤러 작성하기

생성한 프로젝트에 패키지 생성하기

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

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"
    }
    
}

애플리케이션 실행하기

상단부에 위치한 실행 버튼을 누르면 동작
(단축키 : Alt + Shift + F10 , 같은 동작 재실행 : Shift + F10)

  • 애플리케이션 정상 실행 = 콘솔 탭에 실행로그 출력
    로그의 3번째 줄 : 8080포트로 웹 서버 열린 것 확인 가능

애플리케이션이 올바르게 동작하는지 테스트하는 방법 2가지 ⬇️

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

: 스프링 부트가 설정한 URL로 접속하면 간단하게 실행 결과 확인 가능

  • 장점 : 간편하다.
  • 단점 : 상세한 응답을 확인할 수 없다.

② Talend API Test(크롬의 확장 프로그램)를 통한 동작 테스트

: HTTP 통신을 테스트하는 프로그램

  • 장점 : HTTP 헤더를 볼 수 있다.
  • 단점 : 확장 프로그램을 설치해야 한다.

스터디 가이드

Jar와 War의 차이점과 특징 알아보기

  • Jar와 War 모두 자바 언어의 툴에서 사용하는 아카이브 파일
  • 애플리케이션의 배포와 동작을 위해 사용

❓ 아카이브 파일

그레이들(Gradle)에 대해 알아보기


궁금증

프로젝트 생성 시, 패키징 옵션이 뭐지? Jar, War 공부하기

의존성 종류에 대해서 알아보기

profile
Moving forward based on records

0개의 댓글