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

리얼브로·2023년 3월 6일
0

1-1.인텔리제이 소개

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

1-2.인텔리제이 설치

  • 젯브레인 툴박스를 이용해서 설치

    젯브레인의 제품 전체를 관리해 주는 데스크톱 앱

    모든 제품군의 버전 관리와 JVM 옵션 등을 조절하기 편하다.

  • 다운로드 페이지 https://www.jetbrains.com/toolbox/app/

  • free download 버튼을 클릭해서 설치 진행

  • 설치가 완료되면 작업 표시줄에 아이콘이 생기고 실행하면

    설치된 제품군과 옵션을 설정할 수 있다.

Maximum Heap Size 가 750MB 로 되어있다. 기본값은 개발 PC의 메모리가 4G 이하일 때를

가정하고 설정된 값이므로 PC의 메모리가 8G 라면 1024~2048을 16G라면 2048~4096을

선택해서 사용하자.

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

  • 인텔리제이에는 이클립스의 워크스페이스 와 같은 개념이 없다.

    프로젝트와 모듈의 개념만 있어 인텔리제이를 실행할 때 모든 프로젝트를 한 번에 불러올 수 없다.

    한 화면에서는 하나의 프로젝트만 열린다.

    참고 : https://jojoldu.tistory.com/334#ref=facebook

  • 처음 설치할 경우에는 가져올 이전 설정이 없으므로 [Do not import setting -> OK] 를 차례로 클릭한다.

  • 테마선택
  • 단축키 설정은 디폴트 버전을 추천.
  • 런처 스크립트 설정
  • 기본 플러그인 선택

    기본 제공하는 플러그인 중 사용하고 싶지 않은 것이 있다면 비활성화. 아니면 default

  • 추가 선택 플러그인 선택에서 자바뿐만 아니라 스칼라도 사용하고 싶다면

    Scala 플러그인을, Vim 모드로 쓰고 싶다면 IdeaVim 을 설치하면 된다.

  • 모든 설정이 끝나면 프로젝트 생성 화면이 나온다.

    Create New Project 를 클릭해서 신규 프로젝트 생성

  • 프로젝트 유형은 그레이들 선택

  • GroupId와 ArtifactId를 등록한다. ArtifactId는 프로젝트의 이름이 되기 때문에

    원하는 이름을 작성해 준다.

  • 인텔리제이의 기본 설정값으로 그대로 두고 다음으로 넘어간다.

  • 디렉토리 위치는 기본적으로는 ArtifactId가 프로젝트 이름이 되며,

    기본으로 잡혀 있는 위치외에 원하는 위치가 있다면 Project location에서 수정하면 된다.

  • 모든 설정이 끝나면 그레이들 기반의 자바 프로젝트가 생성된다.

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

  • 인텔리제이에서 build.gradle 파일을 열어 보자.

    plugins{
    	id 'java'
    }
    
    group 'org.example'
    version '1.0-SNAPSHOT'
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
    	testImplementation 'junit:junit:4.13.1'
    }

    자바 개발에 가장 기초적인 설정만 되어있는 상태다.

    스프링 부트에 필요한 설정들을 하나씩 추가하자

    먼저 프로젝트의 의존성 관리를 위한 설정을 해주자.

    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.9.RELEASE' 정의 했는데 즉, 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'

    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')
    }
    • repositories는 각종 의존성(라이브러리)들을 어떤 원격 저장소에서 받을지를 정한다.

      기본적으로 mavenCentral을 많이 사용하지만, 최근에는 라이브러리 업로드 난이도 때문에

      jcenter도 많이 사용한다.

    • mavenCentral은 이전부터 많이 사용하는 저장소지만, 본인이 만든 라이브러리를 업로드하기

      위해서는 정말 많은 과정과 설정이 필요하다. 그러다 보니 개발자들이 직접 만든 라이브러리를

      업로드하는 것이 힘들어 점점 공유가 안 되는 상황이 발생했다.

      최근에 나온 jcenter는 이런 문제점을 개선하여 라이브러리 업로드를 간단하게 했다.

      또한, jcenter에 라이브러리를 업로드하면 mavenCentral에도 업로드 될 수 있도록 자동화를

      할 수 있다. 그러다 보니 개발자들의 라이브러리가 점점 jcenter로 이동하고 있다.

      여기서는 mavenCentral, jcenter 둘 다 등록해서 사용한다.

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

      여기서는org.springframework.boot:spring-boot-starter-web 와

      org.springframework.boot:spring-boot-starter-test를 받도록 선언되어 있다.

      인텔리제이는 메이븐 저장소의 데이터를 인덱싱해서 관리하기 때문에 커뮤니티 버전을 사용해도 의존성 자동완성이 가능하다.

    • compile (implementation 버전차이) 메소드 안에 라이브러리의 이름의 앞부부만 추가한 뒤

      자동완성(단축키:윈도우, 맥[Ctrl+Space])을 사용하면 다음과 같이 해당 라이브러리들의

      목록을 볼 수 있다.

  • 의존성 코드는 직접 작성해도 되고, 자동완성으로 만들어도 된다.

    단, 특정 버전을 명시하면 안된다. 버전을 명시하지 않아야만 맨 위에 작성한

    'org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}' 의 버전을

    따라가게 된다.

    이렇게 관리할 경우 각 라이브러리들의 버전 관리가 한 곳에 집중되고, 버전 충돌 문제도

    해결되어 편하게 개발을 진행할 수 있다.

    이코드를 모두 적용한 전체 코드는 아래와 같다.

    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'
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        implementation('org.springframework.boot:spring-boot-starter-web')
        testImplementation('org.springframework.boot:spring-boot-starter-test')
    }
  • 코드 작성이 완료되면 'build.gradle에 변경이 있으니 반영하라'는 인텔리제이의 알람이 오른쪽에

    아래에 나온다. 알람 오른쪽의[Enable Auto-import]를 클릭하면 build.gradle 변경이 있을 때마다

    자동으로 반영이 되며, 왼쪽[Import Changes] 버튼을 클릭하면 1번만 반영된다.

    변경이 있을 때마다 클릭하기는 번거로우니[Enable Auto-import] 버튼을 클릭하자.

    클릭하게 되면 그레이들이 변경된 내용을 반영하기 시작한다.

    아래와 같이 추가한 두 개의 라이브러이인 spring-boot-start-web 과 spring-boot-starter-test 와

    관련된 라이브러리들을 받고 있는 것을 확인할 수 있다.

    모두 받게 되면 [Gradle] 탭을 클릭해서 의존성들이 잘 받아졌는지 확인해 본다.

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

인텔리제이에서 단축키로 윈도우에서는[Ctrl+Shift+A], 맥에서는 [Command+Shift+A]를

사용해 Action 검색창을 열어 share project on github을 검색 한다.

해당 Action을 선택한 후 엔터를 누르면 깃허브 로그인 화면이 나온다.

본인 깃허브 계정으로 로그인 한다. 그럼 다음과 같이 깃허브에 생성할 저장소 정보를

입력하는 화면이 나온다. [Repository name] 필드에 등록한 이름으로 깃허브에 저장소가

생성 된다. 대부분은 프로젝트 이름을 깃허브 저장소와 같은 이름을 사용한다.

[Share] 버튼을 클릭하면 깃허브 저장소와 동기화를 진행한다.

동기화 과정에서 커밋 항목으로 추가할 것인지 묻는 안내문이 나올수 있는데 처음에는 [No]

를 선택한다.

그럼 바로 프로젝트의 첫 번째 커밋을 위한 팝업창이 등장한다.

여기서 .idea 디렉토리는 커밋하지 않는다. 이는 인텔리제이에서 프로젝트 실행시 자동으로

생성되는 파일들이기 때문에 깃허브에 올리기에는 불필요하다.

커밋 메시지를 작성하고 [OK] 버튼을 누르면 깃 커밋과 깃허브 푸시가 진행된다.

커밋과 푸시가 성공했다면 인텔리제이로 만든 프로젝트가 그대로 깃허브에도 생성된것을

확인 할 수 있다.

깃에서 특정 파일 혹은 디렉토리를 관리 대상에서 제외할 때는 .gitignore파일을 사용한다.

인텔리제이에서는 이 .gitignore 파일에 대한 기본적인 지원이 없다.

대신 플러그인에서 .gitignore 지원을 하고 있다.

.gitignore 플러그인에서 지원하는 기능들은 다음과 같다.

  • 파일 위치 자동완성
  • 이그노어 처리 여부 확인
  • 다양한 이그노어 파일 지원(.gitignore, npmignore, dockerignore 등등)

인텔리제이에서 단축키로 윈도우에서는[Ctrl+Shift+A], 맥에서는 [Command+Shift+A]를

사용해 Action 검색창을 열어 plugins을 검색한다.

[Marketplace] 탭은 설치 가능한 플러그인 목록을 보여주며, [Installed]탭은 이미 설치된

플러그인 목록을 나타낸다.

[Marketplace] 탭에서 .ignore을 검색하거나 찾아서 [Install] 버튼을 차례로 클릭해서 설치한다.

이때 반드시 인텔리제이를 다시 시작해야만 설치한 플러그인이 적용되므로 잊지 말고

재시작을 해야만 한다.

다음 그림과 같이 왼쪽 위의 프로젝트 이름을 선택한 뒤, 마우스 오른쪽 버튼을 누르거나

단축키를 눌러 생성 목록을 연다. 윈도우[Alt+Insert], 맥[Command+N]

생성 목록 아래에 [.ignore file -> gitignore file(Git)]을 선택해서 .gitignore 파일을 생성한다.

다음과 같이 .gitignore 생성 화면이 나온다.

Generator 화면의 경우 사용자가 미리 만들어 둔 이그노어 템플릿을 선택하는 화면이다.

예를 들어 본인이 이미 인텔리제이 프로젝트를 사용할 때는 A라는 디렉토리와 B라는

파일을 이그노어하도록 미리 설정해 둔것이 있다면 해당 템플릿을 선택하고 [Generator]

버튼을 클릭하면 바로 생성된다. 미리 만들어 둔 것이 없기 때문에 바로 [Generator] 버튼을

클릭해 .gitignore 파일을 생성한다. 생성된 .gitignore 파일에 깃 체크 대상에서 제외하고

싶은 이름을 작성하면 된다.

인텔리제이에서 자동으로 생성되는 파일들을 모두 이그노어 처리하자.

이그노어 처리된 것을 깃허브에도 반영하자.

단축키 윈도우[Ctrl+K], 맥[Command+K] 를 눌러 깃 커밋 창을 열자.

.gitignore 파일을 선택하고, 메시지를 작성한 다음 [Commit] 버튼을 클릭한다.

단축키 윈도우[Ctrl+Shift+K], 맥[Command+Shift+K] 를 눌러 푸시 하자.

[Push] 버튼을 클릭하면 바로 푸시가 진행된다.

깃허브의 프로젝트로 이동해서 반영된 것을 확인하자.

0개의 댓글