[스프링 부트] Chapter 01

두두·2023년 1월 13일
0

이 글은 이동욱 님의 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 책 내용을 정리한 것입니다.


코테이토에서 새로운 스프링 스터디에 참여하기로 했다!
항상 공부를 시작하는 단계에서는 설레고 기대가 되는데 막상 하다보면 끝까지 제대로 끝내는게 어려운 것 같다.
이번에는 백엔드 공부를 더 하고 싶기도 하고, 이제 졸프(Ponitor) 개발에도 집중해야 하기 때문에 정말 열심히, 또 끝까지 공부해서 많이 배워가야지!

우리 스터디에서 사용하는 교재는 다음과 같다.

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

당연하지만 아래의 내용은 모두 해당 교재 내용을 정리한 것이다!



Chap1. 인텔리제이로 스프링 부트 시작하기



1.1 인텔리제이 소개

책의 저자가 생각하는 이클립스에 비해 인텔리제이가 갖는 강점

  • 강력한 추천 기능
  • 더 다양한 리팩토링과 디버깅 기능
  • 이클립스의 깃에 비해 훨씬 높은 자유도
  • 프로젝트 시작할 때 인덱싱을 하여 파일을 비롯한 자원들에 대한 빠른 검색 속도
  • HTML과 CSS, JS, XML에 대한 강력한 기능 지원
  • 자바, 스프링 부터 버전업에 맞춘 빠른 업데이트

실제로 네이버, 카카오, 라인, 쿠팡, 우아한형제들 등등에서는 인텔리제이 얼티메이트를 공식 IDE로 사용하고 있다.
사실 나는 이것만으로 인텔리제이를 사용할 충분한 이유가 되지 않나 생각했다.

하지만, 인텔리제이 얼티메이트는 유료서비스이고, 스프링 부트를 개발하는 데 있어서는 인텔리제이 커뮤니티로도 큰 어려움이 없기 때문에 책에서는 인텔리제이 커뮤티니를 사용한다.

필자는 다만, HTML, CSS, 자바 스크립트에 대한 지원은 없기 때문에 이들에 대한 개발은 Vs Code와 같은 무료 개발 도구를 사용할 것을 추천했다.



1.2 인텔리제이 설치하기

책에서는 바로 인텔리제이를 설치하지 않고 젯브레인 툴박스를 이용한다.
툴박스는 인텔리제이를 만든 젯브레인의 제품 전체를 관리해주는 데스크톱 앱으로 안드로이드 스튜디오와 웹스톰, 인텔리제이 등 모든 제품군의 버전관리와 JVM 옵션 등을 조정할 수 있다.

젯브레인은 아래의 링크에서 다운로드 받을 수 있다.
https://www.jetbrains.com/toolbox-app/

이후 인텔리제이 커뮤니티를 다운로드받으면 된다.

IntelliJ → 설정 → Settings 을 클릭하면 인텔리제이에 대한 다양한 설정 기능을 볼 수 있고,

다음과 같이 최대 힙 크기를 설정할 수 있다.
이 설정은 인텔리제이를 실행하는데, 어느 만큼의 메모리를 할당할지 결정하는 값으로 기본값은 개발 PC의 메모리가 4GB 이하일 때를 가정하고 설정된 값이다.
따라서 본인의 PC가 이보다 좋은 성능을 갖고 있다면 더 높여서 쾌적하게 사용하면 된다고 한다.
일반적으로 메모리가 8GB라면 1024~2048. 16GB라면 2048~4096을 선택해서 사용한다고 한다.
(나는 8GB라 1024로 설정했다.)



1.3 인텔리제이 커뮤니티에서 프로젝트 생성하기

File → new → project 에서 새로운 프로젝트를 생성하면 다음과 같은 화면을 볼 수 있다.

프로젝트 유형에서는 Gradle을 선택해주고,
GroupId와 ArtifactId를 등록하는데 ArtifactId는 프로젝트의 이름이 된다.

원하는 위치가 있다면 Location에서 수정해주면 된다.

모든 설정이 끝나고 Create를 클릭하면 그레이들 기반의 자바 프로젝트가 생성된다.



1.4 그레이들 프로젝트를 스프링 부트 프로젝트로 변경하기

여기서는 그레이들 프로젝트스프링 부트 프로젝트로 변경한다.

build.gradle 파일을 연다.
그러면 다음과 같은 간단한 코드를 확인할 수 있다.

plugins {
    id 'java'
}

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

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}

test {
    useJUnitPlatform()
}

이 코드는 자바 개발에 가장 기초적인 설정만 되어있는 상태다.
여기에 스프링 부트에 필요한 설정들을 하나씩 추가한다.

책의 저자는 여기서 스프링 이니셜라이저(start.spring.io)를 통해 진행하지 않는데,
그 이유는 다음과 같다.
스프링 이니셜라이저를 사용하게 되면 build.gradle의 코드가 무슨 역할을 하는지, 이니셜라이저 외에 추가로 의존성 추가가 필요하면 어떻게 해야 할지 등을 모르는 상태로 개발하는 경우가 있기 때문이다.


먼저 맨위에 아래 코드를 추가한다.
아래 코드는 이 프로젝트의 플러그인 의존성 관리를 위한 설정이다.

buildscript{
    ext{
        springBootVersion = '2.1.7.RELEASE'
    }
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}
  • ext : build.gradle에서 사용하는 전역변수 설정
    여기서는 springBootVersion 전역변수를 생성하고 그 값을 '2.1.7.RELEASE'로 하겠다.
    = 스프링부트 그레이들 플러그인의 2.1.7.RELEASE를 의존성으로 받겠다.

다음은 앞서 선언한 플러그인 의존성들을 적용할 것인지를 결정하는 코드다. ```java apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' ```

이제 나머지 코드를 작성한다.
repositories는 각ㅈ봉 의존성들을 어떤 원격 저장소에서 받을지 정한다.
최근에는 라이브러리 업로드 난이도 때문에 jcenter를 많이 사용한다.
이전부터 많이 사용하던 mavenCentral는 본인이 만든 라이브러리를 업로드하는 것이 힘들다.
jcenter는 해당 문제점을 개선하여 라이브러리 업로드를 간단하게 하였다. 뿐만아니라 jcenter에 라이브러리를 업로드하면 mavenCentral에도 업로드 될 수 있도록 자동화 할 수 있다.
여기서는 둘 다 사용한다.

repositories {
    mavenCentral()
    jcenter()
}

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

사실 책에서는 complie()과 testCompile()메소드를 사용한다.
하지만 그래들 버전이 업데이트 되면서 해당 메소드는 사라져서 implementation()을 사용했다.


코드작성이 다 되었다면
수정후 뜨는 아래 버튼의 코끼리를 눌러줘도 되고,

알람 오른쪽의 Enable Auto-Import를 클릭해 변경이 있을 때마다 자동으로 반영이 되도록 할 수 있다.



1.5 인텔리제이에서 깃과 깃허브 사용하기

인텔리제이에서 단축기로 Ctrl + Shift + A를 사용해 Action 검색창을 열어
share project on github를 검색해 해당 Action을 선택한다.

이후 깃허브 로그인을 진행한 후 프로젝트를 생성한다.

첫번째 커밋을 진행할 때, .idea 디렉토리는 커밋하지 않는다.
인텔리제이에서 프로젝트 실행시 자동으로 생성되는 파일들이기 때문에 깃허브에 올리기에는 불필요하기 때문이다.


profile
멋쟁이가 될테야

0개의 댓글