해당 프로젝트는 이동욱 저자의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 보고 따라하며, 스프링의 경험을 쌓기위한 프로젝트입니다.

 

프로젝트에 시작하기에 앞서 저는 IntelliJ와 JDK가 모두 설치되어 있기 때문에 설치가 안되어있으신 분들은 IntelliJ 및 JDK를 설치한다음 따라하시면 좋을 것 같습니다.

 

 

책에서의 개발 환경은 아래와 같습니다.

  • Java 8(JDK 1.8)
  • Gradle 4.8 ~ Gradle 4.10.2

저의 개발 환경은 아래와 같습니다.

  • Java 11 (JDK 11.0.12)
  • Gradle 7.1

프로젝트를 하면서 책에서와 다른 버전이라 안되는 부분들은 찾으며 해결해 나가려고 합니다.

 

github에서 책의 프로젝트 완성된 코드의 링크는 아래에 추가했습니다.

 

GitHub - jojoldu/freelec-springboot2-webservice

Contribute to jojoldu/freelec-springboot2-webservice development by creating an account on GitHub.

github.com

 

 

프로젝트 생성 버전

 

보통 스프링 부트 프로젝트는 start.spring.io 혹은 IntelliJ에서 Spring Initializr로 프로젝트를 생성하는데 해당 책에서는 필요한 기능별로 gradle에 추가하면서 진행할 예정이라고 합니다. 이렇게 하는 이유는 build.gradle의 코드가 무슨 역할을 하는지, 의존성 추가가 필요할 때 어떻게 해야하는지 알기 위함입니다.

 

 

먼저 build.gradle 맨 위에 위치할 코드입니다.

buildscript {
    ext {
        springBootVersion = '2.1.9.RELEASE'
    }
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

위의 코드를 간략하게 설명하면

  • ext : build.gradle에서 사용하는 전역 변수를 설정하겠다는 의미입니다. 위의 코드는 springBootVersion 전역 변수를 생성하고 그 값을 2.1.7.REALEASE로 하겠다는 의미입니다. 즉, spring-boot-gradle-plugin라는 스프링 부트 그레이들 플러그인의 2.1.7.RELEASE를 의존성으로 받겠다는 의미입니다.

 

다음은 앞서 선언한 플러그인 의존성들을 적용할 것인지를 적용할 코드입니다. 위의 코드 바로 아래에 추가해주시면 됩니다.

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'	// 스프링 부트의 의존성들을 관리해주는 플러그인이기 때문에 꼭 추가

 

앞 4개의 플러그인은 자바와 스프링 부트를 사용하기 위해서는 필수 플러그인들이니 항상 추가하면 됩니다. 나머지 코드들은 아래와 같습니다.

 

repositories {
    mavenCentral()
    jcenter()
}

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

github의 링크엔 dependencies에서 compile을 사용하여 의존성을 선언하지만, 에러가 뜰 것 입니다. copile->inplementation으로 고쳐주시면 됩니다. (2019년 애플리케이션 gradle 작업할 때도 compile이 아닌 implementation을 사용했는데 gradle 측면에서 바뀐 것 같습니다.)

 

 repositories는 각종 의존성(라이브러리)들을 어떤 원격 저장소에서 받을지를 정합니다. 기본적으로 mavenCentral을 많이 사용하지만, 최근에는 라이브러리 업로드 난이도 때문에 jcenter도 많이 사용한다고 합니다.

 

 mavenCentral은 이전부터 많이 사용하는 저장소지만, 본인이 만든 라이브러리를 업로드하기 위해서는 정말 많은 과정과 설정이 필요하다고 합니다. 이러한 문제점을 해결하기 위해 jcenter가 나왔고 라이브러리 업로드를 간단하게 할 수 있게 하였습니다.

 dependencies는 프로젝트 개발에 필요한 의존성들을 선언하는 곳 입니다.

 

build.gradle

buildscript {
    ext {
        springBootVersion = '2.1.9.RELEASE'
    }
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'         // 스프링 부트의 의존성들을 관리해주는 플러그인이기 때문에 꼭 추가해야만 합니다.

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
    jcenter()
}

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

저의 build.gradle 입니다. 코드 작성이 완료되었다면, 코끼리 버튼을 눌러 바뀐 gradle을 프로젝트에 적용해주면 됩니다.

 

저는 프로젝트를 github에 올리며, sourcetree로 업로드하는데 책과는 달라서 본인의 방식대로 Github에 올려 관리하시면 좋을 것 같습니다. github를 사용해보지 않으신 분들은 github를 공부하여서 프로젝트를 관리하시면 좋을 것 같습니다. 

 

 

 

 

 

 

출처

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - YES24

가장 빠르고 쉽게 웹 서비스의 모든 과정을 경험한다. 경험이 실력이 되는 순간!이 책은 제목 그대로 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링

www.yes24.com

 

 

+ Recent posts