본문 바로가기
Spring

Spring Boot Project 생성하기(Gradle)

by 융디's 2024. 6. 5.
728x90
Spring Boot Project 생성하기(Gradle)

Spring Boot Project 생성하기(Gradle)

Spinrg Boot Project를 Gradle을 이용하여 생성해 보자.

Spring Initializr에서 생성하기

프로젝트를 시작하는데 필요한 기본 설정이 자동으로 생성되므로, 설정에 시간을 절약할 수 있다.
  1. Sping Initalizr 웹사이트 접속

    Spring Initializr

  1. 내가 생성하고자 하는 프로젝트를 설정
    • Project
      • 프로젝트 타입을 선택
      • Maven, Gradle 중 하나를 선택
    • Language
      • 프로젝트를 구축할 언어를 선택
      • Java, Kotlin, Groovy 중 하나를 선택
    • Spring Boot
      • 해당 프로젝트에서 사용할 Spring Boot 버전 선택
      • 보통 최신 버전을 선택한다.
    • Project Metadata
      • 프로젝트의 메타데이터를 입력(프로젝트의 기본 정보)
      • Group : 프로젝트 그룹 또는 패키지 명
      • Artifact : 프로젝트의 아티팩트 아이디
        • 프로젝트의 고유한 식별자로 사용
        • Maven이나 Gradle에서 생성되는 JAR 파일의 이름으로 사용
      • Name : 프로젝트 이름
      • Description : 프로젝트에 대한 간단한 설명
      • Package name : 프로젝트의 기본 패키지 구조 지정
        • Java 클래스와 소스 파일을 구조화하는데 사용
        • Group과 Artifact를 기반으로 하여, 기본 패키지명이 생성되며, 여기에 추가적인 패키지명을 정의 가능
      • Packaging : 프로젝트를 빌드 할 때 생성될 파일 형식
        • JAR : 단독 실행 가능한 Java 애플리케이션을 위한 것
        • WAR : Java 웹 애플리케이션을 위한 것
      • Java : 프로젝트에서 사용할 Java 버전
    • Dependencies
      • 프로젝트에 필요한 의존성 선택
  1. Generate 버튼을 클릭하여 프로젝트 생성
  1. 생성이 완료되면 ZIP 파일을 다운로드 받아, 압축 풀기
  1. 프로젝트를 IDE에 import 하고 개발 시작

IntelliJ에서 생성하기(유료 버전)

  1. File → New → Project 클릭
  1. Spring Initalizr 클릭 후 프로젝트 정보 입력 → Next 클릭
  1. 프로젝트에 필요한 의존성 선택
  1. Spring Boot Project 생성 완료

Spring Boot Project

생성한 Spring Boot Porject에 대해 자세히 알아보자
  1. 프로젝트 구조
    • src/main/java : 소스 코드 위치
    • src/main/resources : 리소스 파일 위치
    • src/test/java : 테스트 코드 위치
    • src/test/resources : 테스트 리소스 위치
    • / : 프로젝트 설정 파일
  1. 의존성 관리
    • Maven이나 Gradle을 사용하여 의존성을 관리
    • 프로젝트를 생성할 때 선택한 의존성은 pom.xml이나 build.gradle 파일에 기록되어 있다.
    • 해당 파일을 통해 필요한 라이브러리 및 프레임워크를 관리하고 추가한다.
  1. 애플리케이션 클래스
    • 스프링 부트 애플리케이션은 @SpringBootApplication이 지정된 메인 클래스를 가진다.
    • 스프링 부트 애플리케이션의 진입점이며, 내장된 웹서버를 시작하는데 사용

  1. 기본 구성 파일
    • application.properties이나 application.yml 파일을 사용하여 애플리케이션의 구성을 정의
    • 데이터베이스 연결 정보, 서버 포트, 로깅 설정 등을 지정
  1. 웹 컨트롤러 및 서비스
    • 컨트롤러는 HTPP 요청을 처리
    • 서비스는 비즈니스 로직을 처리
    • 이러한 클래스들은 @Controller, @Service 등의 스프링 애너테이션을 사용하여 정의한다.
  1. 테스트
    • 테스트를 작성하고 실행하는 데 간편한 환경을 제공
    • JUnit이나 Mockito와 같은 테스트 프레임워크를 사용하여 단위 테스트나 통합 테스트를 작성할 수 있다.

build.gradle 파일 분석하기

plugins {
		id 'java'
		id 'org.springframework.boot' version '3.2.5'
		id 'io.spring.dependency-management' version '1.1.4'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
		sourceCompatibility = '21'
}

repositories {
		mavenCentral()
}

dependencies {
		implementation 'org.springframework.boot:spring-boot-starter-web'
		testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
		useJUnitPlatform()
}

< org.springframework.boot → 배포 및 실행 >

  • Spring Boot 애플리케이션을 빌드하고 패키징 하는데 사용되는 Gradle 플러그인
  • Gradle 빌드 스크립트에서 Spring Boot와 관련된 설정을 간편하게 구성 가능
  • boot Run
    • Spring Boot 애플리케이션을 실행
    • 실행할 메인 클래스를 지정 가능
  • bootJar
    • Spring Boot 애플리케이션을 jar 패키지로 빌드
    • 의존성 라이브러리를 포함한 실행 가능한 jar 파일 생성
  • bootWar
    • Spring Boot 애플리케이션을 war 패키지로 빌드
    • 의존성 라이브러리를 포함한 war 파일 생성
  • bootBuildImage
    • Spring Boot 애플리케이션을 OCI(Docker) 이미지로 빌드
    • Docker 이미지를 생성하고 Docker 레지스트리에 업로드 가능

< io.spring.dependency-management → 의존성 관리 >

  • Gradle 프로젝트에서 의존성 관리를 위해 사용되는 플러그인
  • 버전 관리를 자동으로 수행하여, 의존성 관리를 더욱 효율적으로 할 수 있다.
  • dependencyUpdates
    • 프로젝트의 의존성에 대해 업데이트 가능한 버전을 확인하고 출력
  • dependencyManagement
    • 의존성 관리를 위해 사용되는 Maven BOM(Bill of Materials) 파일 생성

      Maven BOM(Bill of Materials 이란?

      의존성 관리를 위한 파일, Maven Repository에 업로드되는 특수한 종류의 ROM 파일
      • 프로젝트에서 사용되는 의존성 버전을 관리할 수 있도록 도와준다.
      • 의존성을 정의하는 POM 파일과 비슷한 구조를 가지고 있다.
        • 단, BOM 파일은 의존성 버전만 포함하고, 실제 의존성을 제공하지 않는다.
        • BOM 파일을 프로젝트에서 참조하여, 필요한 의존성 버전을 지정 가능

          ⇒ 여러 프로젝트에서 동일한 의존성 버전을 사용할 수 있는 이유!

    • 다른 Maven 프로젝트에서 참조할 수 있도록 BOM 파일을 Maven Repository에 업로드
      → 다른 프로젝트에서 이를 쉽게 사용 가능 → 버전 업그레이드나 보안 업데이트 등의 변경사항을 일괄적으로 적용 가능
  • group
    • 프로젝트의 그룹명을 설정하는 속성
    • Maven Repository에 업로드될 때의 그룹명으로 사용
    • 보통 프로젝트의 패키지 명과 동일하게 지정
  • version
    • 프로젝트의 버전을 설정하는 속성
    • 프로젝트의 변경사항에 따라 업데이트되며, Maven Repository에서는 버전별로 구분
    • 버전은 Major.Minor.Patch -SNAPSHOT 형식으로 지정
      • Major 버전 : 하위 호환성이 없는 큰 변경이 일어날 때 업데이트
      • Minor 버전 : 하위 호환성을 유지하면서 기능이 추가될 때 업데이트
      • Patch 버전 : 하위 호환성을 유지하면서 버그를 수정할 때 업데이트
      • SNAPSHOT : 개발 중인 버전을 나타내는 접미사
        • 버전은 아직 출시되지 않았고, 현재 개발 중이라는 의미
        • 개발 중인 프로젝트에서는 해당 접미사를 사용하여 버전을 관리하는 것이 일반적
    • 0.0.1은 초기 버전을 나타내며, 이후 기능을 추가하거나 버그를 수정할때 업데이트
  • sourceCompatibility
    • 프로젝트의 소스 코드 버전을 설정하는 속성
    • 이 속성을 설정하면, 컴파일러가 해당 버전으로 코드를 컴파일
    • 21로 설정 → JAVA 21버전의 소스코드를 사용한다는 것을 의미
  • repositories
    • 사용할 라이브러리들이 저장되어 있는 Maven Repository의 위치를 지정
    • Gradle에서 사용하는 라이브러리를 간편하게 관리 가능
    • 필요한 라이브러리를 쉽게 찾아 다운로드 가능

< org.springframework.boot:spring-boot-starter-web >

  • Spring Boot 애플리케이션을 개발할 때 웹 개발에 필요한 의존성을 관리하는 Starter
  • Spring MVC, Tomcat, Jackson 등과 같은 필수적인 웹 개발 라이브러리를 제공
    • Spring MVC : 웹 애플리케이션을 개발할 때 사용되는 웹 프레임워크
    • Tomcat : 내장형 웹 서버
    • Jackson : JSON 형식 데이터를 다루기 위한 라이브러리
  • 불필요한 의존성을 추가하지 않고도 웹 애플리케이션을 개발 가능
  • Spring Boot의 자동 설정 기능을 이용하여 빠르게 쉽게 구성 가능

728x90

'Spring' 카테고리의 다른 글

Spring Boot 실행 클래스 분석하기  (0) 2024.06.06
WEB Server와 WAS  (0) 2024.06.04
Spring Framework과 Spring Boot  (0) 2024.06.03
Library와 Framework, API  (0) 2024.06.02