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

uuuu.jini·2022년 2월 14일
0
post-thumbnail

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

  1. 인텔리제이 소개
  2. 인텔리제이 설치
  3. 커뮤니티에서 프로젝트 생성
  4. 그레이들 프로젝트를 스프링 부트 프로젝트로 변경
  5. 인텔리제이에서 깃과 깃허브 사용

스프링 부트로 웹서비스를 구현하기 위한 가장 첫번째 단계인 개발환경을 구성해보았다. 인텔리제이를 설치하고 사용법을 알아 볼 것이다.

1. 인텔리제이란 ?

자바 웹 개발에서 가장 대표적인 개발 도구는 이클립스일 것이다. 하지만 인텔리제이는 강력한 추천 기능, 훨씬 더 다양한 리팩토링,디버그 기능, 이클립스의 깃에 비해 훨씬 높은 자유도 등의 많은 장점을 가진다. 실제로 많은 IT 회사에서는 인텔리제이 얼티메이트(유료)를 공식 IDE로 사용하고 있다.

인텔리제이는 유료버전인 얼티메이트와 무료버전인 커뮤니티 버전 두 가지가 있다. 인텔리제이 얼티메이트는 개발에 필요한 모든 기능을 지원하지만 개인이 구매하기에는 부담스러운 비용이다. 커뮤니티(무료)를 사용하여도 스프링 부트를 개발하는 데는 크게 어려움이 없다. ( 나는 이미 얼티메이트를 소유하고 있으므로 해당 ide를 사용할 예정)


2. 인텔리제이 설치

바로 인텔리제이를 내려받지 않고 젯브레인 툴박스를 이용하여 설치한다. 툴박스는 젯브레인의 제품 전체를 관리해주는 데스크톱 앱으로 버전관리등을 편하게 해준다. 툴박스를 설치한후 차례로 인텔리제이 커뮤니티 버전 설치에 대한 설명이 나와있다.


3. 프로젝트 생성하기

인텔리제이에는 이클립스의 워크스페이스와 같은 개념이 없다. 프로젝트와 모듈의 개념만 있ㅁ으며, 그래서 이넬리제이를 실행할때 모든 프로젝트를 한번에 불러올 수 없다. 한 화면에서는 하나의 프로젝트만 열린다.

Create New Project > Gradle > Java 를 생성한다.


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

그레이들 프로젝트를 스프링 부트 프로젝트로 변경해 보겠다. builde.gradle파일을 보면 기존에는 가장 기초적인 설정만 되어있는 상태이다. 여기에 스프링 부트에 필요한 설정들을 추가할 것이다. (spring initiallizer 를 통해서 진행하지 않는다. - 코드의 역할을 파악하고 그레이들을 충분히 이해하기 위해 )

buildscript {
    ext {
        springBootVersion = '2.1.7.RELEASE'
    }

    repositories {
        mavenCentral()
        jcenter()
    }

    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }

}

ext라는 키워드는 build.gradle에서 사용되는 전역변수를 설정하겠다는 의미이다. 여기서는 springBootVersion 이라는 변수를 생성하였다. 즉, 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 플러그인은 스프링 부트의 의존성들을 관리해 주는 플러그인이므로 꼭 추가해주어야 한다. 자바와 스프링 부트를 사용하기 위해서는 필수 플러그인들이므로 항상 추가해야 한다.


repositories {
    mavenCentral()
    jcenter()
}

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

repositories는 각종 의존성 들을 어떤 원격 저장소에서 받을지를 정한다. 기본적으로 mavenCentral을 많이 사용하지만 최근에는 jcenter도 많이 사용한다. dependencies는 프로젝트 개발에 필요한 의존성들을 선언하는 곳이다.

의존성 코드는 직접 작성해도 되고, 자동완성으로 만들어도 되지만, 특정 버전을 명시하면 안된다. 버전을 명시하지 않아야만 위에 작성한 org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}의 버전을 따라기 때문이다.
--> 버전 관리 한곳에 집중 & 버전 충돌 문제 해결

gradle버전이 맞지 않는 경우 build.gradle의 dependencies의 compile() 메서드가 동작하지 않는다고 나온다. gadle>wrapper>gradle-wrapper.properties에서 버전을 책과 동일하게 맞춰주었다.


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

대부분의 IT 서비스 회사는 깃을 통해 버전관리를 진행한다. 깃의 원격 저장소 역할을 하는 서비스는 대표적 깃허브,깃랩이 있다.

이 프로젝트와 깃허브를 연동할 예정이며, 이 과정 모두 인텔리제이를 통해 진행한다. 인텔리제이에서 [Ctrl+Shift+A] 를 사용해 share project on github 를 검색한다. 해당 액션을 선택한 후 엔터를 누르고 저장소 정보를 입력하는 창에 Repository name필드에 등록한 이름으로 깃허브에 저장소가 생성 된다.

.idea 디렉토리는 커밋하지 않는다. 이는 실행시 자동으로 생성되는 파일들 이기 때문에 깃허브에 올리기에는 불필요하다. add 를 누르면 깃 커밋과 깃허브 푸시가 진행된다.

위와 같이 github에 repository가 생성된다.

깃에서 특정 파일 혹은 디렉토리를 관리대상에서 제외할 때는 .gitignore파일을 사용한다. 이 파일 안에 기입된 내용들은 모두 깃에서 관리하지 않겠다는 것을 의미한다. 인텔리제이에서는 이 파일에 대한 기본적인 지원이 없고 대신 플러그인에서 지원을 한다.

.ignore플러그인에서 지원하는 기능으로는 파일 위치 자동완성,이그노어 처리여부 확인, 다양한 이그노어 파일 지원등의 기능을 한다.

.ignore 플러그인의 설치

[Ctrl+Shift+A] 사용하여 plugins을 검색, 설치 팝업창에서 .ignore->install버튼을 클릭하여 설치한다. (반드시 재시작해야만 설치한 플러그인이 적용된다.)

git ignore 파일의 생성

프로젝트 이름을 선택한뒤 [Alt+Ins] 로 새로운 이그노어 파일중 [.ignore file-> gitignore file]을 선택해서 .gitignore파일을 생성한다.

그림과 같은 생성화면이 나온다. Generator화면의 경우 사용자가 미리 만들어 둔 이그노어 템플릿을 선택하는 화면이다. 미리 만들어 둔 것이 없기 때문에 바로 [Generate] 버튼을 클릭해서 .gitignore파일을 생성한다. 해당 파일에 깃 체크 대상에서 제외하고 싶은 이름을 작성하면 된다.

이렇게 이그노어 처리된 것을 깃 허브에 반영해보겠다. 깃 커밋을 창을 열고(Ctrl + K ) push할 파일을 체크한 후 메시지를 작성하고 commit과 push를 실행한다.

profile
멋쟁이 토마토

0개의 댓글