[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 들어가며~Ch.1

6917 단어 JavabookSpringJava

백엔드 개발자로서 일한 지 벌써 2년차... 아무래도 회사에서는 기존 코드 위에 비즈니스 로직을 치다보니 전체적인 조감도를 다시 한번 그려보고 싶던 차에 이 책이 생각났다.
스프링뿐만 아니라 인프라/배포도 넓고 얕게 다루는게 마음에 든다. 겸사겸사 자바&스프링과도 친해지고 서버&인프라&배포에 대한 이해도 높이고 싶다.

들어가며

localhost:8080 뿐만 아니라, AWS로 URL 주소 할당, CI/CD 환경 갖춰볼 수 있다.

  • 1-5장: 스프링 부트 애플리케이션 만들기
  • 6-7장: AWS 셋팅
  • 8-10장: 배포

1장 인텔리제이, 스프링 부트 시작하기

인텔리제이를 추천하는 이유

  • Smart Completion
  • 리팩토링과 디버깅 기능
  • Git 자유도
  • 성능 (빠른 인덱싱 등)

... 등

무료 버전의 경우도 자바 개발에 대한 모든 기능이 지원된다. 다만 HTML, CSS, Javascript 등에 대한 지원은 없다.

설치

인텔리제이만 바로 설치하는 것도 되지만, 제트브레인 툴박스를 사용해본다.

업데이트도 알려주고, 다른 프로그램들도 같이 관리할 수 있다 (캡쳐 후 바로 업데이트 해줬다 🙂)
매우 마음에 든다!

각 프로그램의 설정에 들어가 할당할 메모리 사이즈를 변경해주는 것도 가능하다. 기본값은 750MB으로 4G 이하를 가정하고 설정된 값이라 한다. 내 PC는 16MB여서 역시 바로 2048로 늘려줬다 히히

** 이미 인텔리제이가 있던 고로 인텔리제이 설정하는 부분은 생략. 테마 정도만 선택하고, 나머지는 적당히 기본값을 선택하면 되는 것 같다.

스프링 부트 프로젝트 생성

인텔리제이 무료버전에서는 New Project에서 스프링을 지원하지 않고 있다. 책에서는 그레이들 프로젝트를 생성하고 스프링 부트를 설정해주는 방법을 사용하고 있다.

spring.io에서 설정하고 다운받는 방법도 있지만, 여기서는 의존성에 대한 이해를 위해 build.gradle을 직접 설정한다.

그레이들 프로젝트 생성
1. New Project
2. Gradle & Java
3. 프로젝트 위치 설정, GroupId & ArtifactId(=프로젝트 이름) 입력

스프링 부트 프로젝트로 변경하기
4. build.gradle 상단에 이 프로젝트의 플러그인 의존성 관리를 위한 설정을 다음과 같이 추가한다.

buildscript {
    ext { // build.gradle의 전역변수 선언
        springBootVersion = '2.1.7.RELEASE'
    }
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}
  1. 다음 플러그인 의존성 적용을 하는 코드를 추가한다.
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
  1. 이하 repositories 블록과 dependencies 블록을 추가해주면 최종적으로 다음과 같다.
// 최종 build.gradle
buildscript {
    ext {
        springBootVersion = '2.1.7.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    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'
sourceCompatibility = 17 // jdk 버전

repositories { // 의존성을 받을 원격 저장소 지정
    mavenCentral() // 전통적인 강자 (단) 직접 만든 라이브러리 업로드가 어려움
}

dependencies { // 프로젝트 내 의존선 선언
	// 인텔리제이에서 저장소 데이터를 갖고 있기 때문에 자동완성 (Ctrl+Space)이 된다
    implementation('org.springframework.boot:spring-boot-starter-web:')
    testImplementation('org.springframework.boot:spring-boot-starter-test')
}

2019년 책이다보니 out-dated된 부분들이 있었다. 먼저 책에서는 dependencies에 compile/testCompile을 사용했는데 빌드가 안되어서 보니까 이제 해당 명령어는 deprecate 되었고 대신 implementation/testImplementation를 사용하게 되어있다. 또한 저장소로 jcenter가 소개되었는데, 2022년부터 더이상 사용하지 않는다고 한다.

우측 상단 Gradle 탭에서 다운받아진 의존성 트리를 확인할 수 있다.

깃허브 연결

  1. 깃허브 가입
  2. Share project on Github 액션 검색 (Ctrl+Shift+space)
  3. 로그인 > 생성할 저장소 이름 설정 > 파일 선택 & initial commit
    • 실행 시 자동생성되는 .idea/.gradle/은 커밋하지 않는다.
    • 책에서는 이어서 .gitignore 관련 인텔리제이 플러그인을 설치한다만, 굳이 필요한가 싶다. 그냥 파일 만들고 /.idea//.gradle/을 추가하면 커밋 대상에 제외되는 것을 확인할 수 있다.

좋은 웹페이지 즐겨찾기