인텔리제이(IntelliJ)
인텔리제이가 이클립스에 비해 강점은 아래와 같습니다.
- 스마트한 추천 기능(Smart Completion)
- 다양한 리팩토링과 디버깅 기능
- 이클립스의 깃(Git)에 비해 높은 자유도
- 프로젝트 시작시 인덱싱을 하며 파일을 비롯한 자원들에 대한 빠른 검색 속도
- HTML, CSS, JS, XML에 대한 강한 지원
- 자바, 스프링 부트 버전업에 맞춘 빠른 업데이트
체감으로 가장 크게 느끼는 것은 추천 기능입니다. 자동완성이 너무 잘 되어 있어서 잠시 이클립스를 볼 일이 있을 때 답답하더라고요.
하지만 인텔리제이는 유료로 제공되고 있습니다만, 학생분들이시라면 인증을 받으시고 교육용으로 이용 가능하십니다. 혹은 인텔리제이 커뮤니티(무료)로 제공되는 버전도 있기에 이를 사용하시는 것을 권장드립니다.
스프링 부트에서 인텔리제이를 사용에 용이한 이유는 4가지가 존재합니다.
- 자바 개발에 대한 모든 기능 지원
- Maven, Gradle과 같은 빌드 도구 기능 지원
- Git & Git Hub와 같은 버전 관리 시스템(VCS) 기능 지원
- 스프링 부트의 경우 톰캣과 같은 별도 외장 서버 없이 실행 가능
인텔리제이 설치
www.jetbrains.com/toolbox-app/
인텔리제이 프로젝트 생성하기
이클립스와 달리 인텔리제이는 워크스페이스의 개념이 존재하지 않습니다. 프로젝트와 모듈의 개념만 존재합니다. 그렇기에 프로젝트를 작업할 때, 한 화면에 하나의 프로젝트만 열립니다.
인텔리제이에서 WorkSpace == Project, Project == Module이라는 것을 알 수 있습니다. 만약 Multi Module을 구현하려 한다면 하나의 창에 하나의 프로젝트를 구현하는 것이 도움됩니다. 여기서 Multu Module은 하나의 도메인을 위한 프로젝트들의 모음이라 생각하면 편합니다.
내용 출처ㅣ jojoldu.tistory.com/334#ref=facebook
[File 탭 -> Gradle -> JAVA 선택] 그 다음 Group ID와 Artifact ID를 등록합니다. Artifact ID는 프로젝트의 이름이 됩니다.
저는 GroupId를 [ com.study ]로 설정하였습니다.
생성된 Gradle 프로젝트는 위 이미지와 같습니다.
그레이들 프로젝트를 스프링 부트 프로젝트로 변경하기
해당 프로젝트의 경로에서 [ build.gradle ]을 엽니다. 그러면 왼쪽과 같은 코드를 확인할 수 있습니다.
이는 자바 개발에 가장 기초적인 설정만 되어있는 상황입니다. 여기에 스프링 부트에 필요한 설정을 추가하겠습니다.
스프링 부트 추가 설정
여기서 학습을 위해 스프링 이니셜라이저(https://start.spring.io/)를 통해 진행하지 않겠습니다.
buildscript{ ... }의 코드를 해당 파일 맨 위에 작성합니다. 이는 프로젝트의 플러그인 의존성 관리를 위한 설정입니다.
- ext 키워드
build.gradle에서 사용하는 전역변수를 사용한다는 의미입니다. 여기서 springBootVersion 전역변수를 생성해 그 값을 '2.1.7.RELEASE'로 한다는 의미입니다.
즉, spring-boot-gradle-plugin이라는 스프링 부트 그레이들 플러그인의 2.1.7.RELEASE를 의존성으로 받겠다는 의미입니다.
[ io.spring.dependency-management ] 플러그인은 스프링 부트의 의존성들을 관리해주는 플러그인이라 꼭 추가해야 합니다. apply plugin들은 스프링 부트를 사용하기 위한 필수 플러그인으로 항상 꼭 추가해야만 합니다.
repositorities는 각종 의존성들을 어떤 원격 저장소에서 받을지 정하는 것입니다. 보통 mavenCentral을 많이 사용하지만, 최근 라이브러리 업로드 난이도때문에 jcenter도 많이 사용합니다.
이 두 가지를 한 번 비교해보겠습니다.
- mavenCentral
이전부터 많이 사용하는 저장소이나, 본인이 만든 라이브러리를 업로드하기 위해서는 많은 과정과 설정이 필요해, 개발자들이 직접
만든 라이브러리를 업로드하는 것이 힘들어 공유가 안되는 상황이 발생했었습니다. - jcenter
이는 mavenCentral의 위와 같은 문제를 개선해 라이브러리 업로드를 간단하게 한 것입니다. 또한 jcenter에 라이브러리를 업로드하면
mavenCentral에도 업로드될 수 있도록 자동화를 할 수 있습니다.
학습을 위해 jeventer와 mavenCentral을 모두 사용하겠습니다.
dependencies는 프로젝트 개발에 필요한 의존성을 선언하는 곳입니다. 'org.springframework.boot:spring-boot-starter-web'와 'org.springframework.boot:spring-boot-starter-test'를 받도록 선언했습니다.
인텔리제이는 메이븐 저장소의 데이터를 인덱싱하여 관리하기에, 무료버전인 커뮤니티 버전을 사용해도 의존성 자동완성이 가능합니다.
compile 메서드 안에 라이브러리 이름의 앞부문만 추가한 뒤 자동완성을 사용하면 라이브러리 목록을 볼 수 있습니다.
메모장이 아닌 인텔리제이 내에서도 수정이 가능합니다. 위에서 언급하였듯 자동완성을 사용해 라이브러리 목록에서 선택할 수 있습니다. 중요한 사실은 절대 특정 버전을 명시하면 안됩니다.
버전을 명시하지 않아아만 상단에 작성한 ${springBootVersion} 전역변수의 버전을 따라갈 수 있습니다. 이렇게 관리할 경우 각 라이브러리들의 버전 관리가 한 곳에 집중되어 버전 충돌 문제도 해결돼 편하게 개발을 진행할 수 있습니다.
최종 코드는 위와 같습니다.
IntelliJ에서 변경된 내용을 반영하기 위해 오른쪽 하단에 뜨는 알람에서 [Enable Auto-import]를 클릭하여 변경이 있을 때마다 자동으로 반영하도록 합니다.
'Development > Spring Framework' 카테고리의 다른 글
스프링 부트 롬복 추가하기 (0) | 2021.05.02 |
---|---|
스프링 부트에서 테스트 코드 작성 (0) | 2021.05.02 |
스프링디자인패턴(4) 싱글턴 패턴 - Singleton Pattern (0) | 2021.04.02 |
스프링 삼각형과 설정 정보 (2) AOP (0) | 2021.03.28 |
스프링 삼각형과 설정 정보 (1) IoC/DI (0) | 2021.03.28 |