본문 바로가기
학습/Spring

[spring] 스프링부트 프로젝트 초기 생성 및 구조 (gradle)

by KKambi 2020. 3. 23.

생성하기

  1. build.gradle 작성
  2. ./gradlew clean
  3. ./gradlew build
  4. @SpringBootApplication이 선언된 Application Class 작성
  5. Run

 

build.gradle 이해

  1. buildscript block
    • 빌드 자체를 위한 ext / repositories / dependencies 추가
    • ext : 전역변수 설정
    • repositories : buildscript 내의 의존성을 어떤 원격 저장소에서 다운로드 받을지 설정
    • dependencies : 빌드를 위한 의존성을 추가. spring-boot-gradle-plugin을 스프링부트 버전에 맞춰 설정
  2. plugins
    • 프로젝트에 포함될 플러그인 설정
    • dependencies에 비해 좀 더 폭넓게 쓰이고 core한 외부패키지라고 생각하면 된다.
  3. group / version / sourceCompatibility
    • 컴파일 시 지정될 그룹, 버전, 소스호환성 설정
  4. repositories
    • 프로젝트에 추가될 의존성을 다운로드할 원격 저장소 설정
    • mavenCentral은 전통적인 저장소이나, 사용자 라이브러리를 업로드하는 것이 어려움
    • jcenter는 라이브러리 업로드가 간단하다. mavenCentral에도 업로드되도록 자동화.
  5. dependencies
    • 프로젝트에 추가될 의존성 설정
    • implementation / testImplementation으로 적용될 환경을 지정할 수 있음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
plugins {
    id 'org.springframework.boot' version '2.2.5.RELEASE'
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
    id 'java'
}
 
group 'kkambi.toy'
version '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
 
repositories {
    jcenter()
}
 
dependencies {
    implementation "org.springframework.boot:spring-boot-starter-web"
    testImplementation "org.springframework.boot:spring-boot-starter-test"
}
cs

 

빌드 = 자바 프로젝트 생성

  • 빌드한 프로젝트는 웹 프로젝트가 아님
  • gradle 기반의 일반적인 자바 프로젝트 (jar 파일 생성)
  • 그런데도 웹 어플리케이션이 실행된다

 

스프링부트의 장점

  • SpringBoot dependency만 추가했는데 Tomcat / slf4j 등 수많은 의존성이 자동으로 추가된다.
  • Servlet, Bean 설정 등과 같은 Spring Web MVC 설정을 하지 않아도 된다.
  • @SpringBootApplicaiton 내부의 @EnableAutoConfiguration과 밀접한 장점!

 

Spring Initializer (https://start.spring.io)

  • 웹에서 손쉽게 초기 프로젝트 생성 가능
  • 의존성을 태그로 쉽게 추천

 

스프링 부트 프로젝트 구조

  1. 일반적인 자바 프로젝트랑 동일
  2. src/main/java/
    • 자바 소스
  3. src/main/resources/
    • 자바 리소스
    • resources 디렉토리는 classpath가 된다
    • classpath prefix로 하위 패키지를 쉽게 참조할 수 있다.
    • ex. @PropertySource("classpath:/application.properties")
  4. src/test/java/
    • 테스트 코드
  5. src/test/resources/
    • 테스트 리소스

 

스프링 부트 메인 어플리케이션의 위치

  • @SpringBootApplication class가 위치하는 곳 = 메인 어플리케이션의 위치
  • 이것이 위치한 패키지부터, 하위 모든 패키지까지 컴포넌트 스캔
  • src/java/ 에 위치한다면 모든 패키지 스캔 (해당 프로젝트와 상관없는 패키지도)
  • 따라서 src/java/ 에 default package를 생성 -> 그 안에 메인 어플리케이션 위치

댓글