[SpringBoot] 스프링부트 IntelliJ 프로젝트 생성 및 설정 (1)

반응형

스프링 부트란?

스프링부트(Spring Boot)는 자바 기반의 웹 어플리케이션 프레임워크인 스프링(Spring) 프레임워크 프로젝트를 좀 더 손쉽게 사용할 수 있도록 만든 도구라고 할 수 있습니다. 사실 웹 개발자가 아니라면 이전에는 스프링을 배우기가 굉장히 까다로웠습니다. 사실 자바 개발자들의 편의를 위해서 나온 프레임워크이긴 하지만 시간이 지날수록 다양한 기능과 설정들이 더해지면서 일반 개발자들이 접근하기는 러닝 커브가 꽤 있는 편이었죠. 하지만 지금은 스프링 부트 프로젝트로 인해서 많은 사람들이 스프링 부트로 개발을 하고 있습니다. 

 

 

 

왜 스프링 부트인가?

국내 대부분의 대형 백엔드 프로젝트는 스프링(Spring)을 사용합니다. 자바스크립트(Javascript)나 파이썬(Python) 또는 루비(Ruby)와 같은 언어로 만들어진 웹 서비스들도 많이 있지만 뭔가 정형화 되어있으면서 안정화되어 있는 웹 서비스를 만들고 싶다면 스프링 부트를 쓰는 것이 좋다고 생각합니다. 무엇보다도 많은 사례와 정보들이 있기 때문에 스프링 부트는 좋은 선택이 될 겁니다.

 

  • 라이브러리 및 버전 관리 자동화
    • 기존에 스프링은 버전을 명시해야 하는 단점이 있었는데 스프링 부트는 Starter 라이브러리를 이용해서 의존성을 해결함은 물론 해당 라이브러리의 의존성 버전을 자동으로 다운로드하며 관리해줍니다.
  • 설정 자동화
    • 기존의 스프링의 불편한 점이 과도한(?) 설정이라고 할 수 있습니다. 나름 전문성있는 작업이라 치부될 수 있지만 요즘과 같은 시대에 아주 불필요한 작업들을 쉽고 편리하게 자동화해줍니다.
  • 내장 톰캣(Tomcat)
    • 스프링 부트의 가장 큰 장점 중 하나는 톰캣(Tomcat)이 내장되어 있다는 것입니다. 톰캣(Tomcat)이 내장되어 있으므로 프로젝트를 다양한 서버에 동일한 설정과 조건으로 배포가 가능하며 이로 인해 얻는 장점은 매우 큽니다.
  • 독립적으로 실행가능
    • 보통 웹 프로젝트는 빌드 후에 패키징을 하고 서버에 배포하는 작업이 번거로운 반면 스프링 부트는 아주 간단하게 Jar라는 파일을 만들고 이를 쉽게 배포 가능합니다. 이는 유지 보수하는 데 있어서 매우 유리한 장점으로 작용합니다.

 

 

 

이클립스 VS 인텔리제이

그럼 어떤 IDE에서 스프링 부트를 사용하는 게 좋을까요? 저도 이 부분이 제일 고민되었습니다. 대형 SI 프로젝트를 보면 아직도 이클립스(Eclipse)를 사용하는 곳이 많이 있습니다. 무엇보다 이클립스(Eclipse)라는 툴 자체가 역사도 깊고 다양한 플러그인이 있고 커스텀도 쉽기 때문인 것 같습니다. 게다가 무료이기도 합니다. 무료라는 장점이 가장 크게 생각됩니다. 그리고 여러 프로젝트를 동시에 관리할 수 있다느 장점이 있습니다. 하지만 오픈소스이다 보니 다양한 버그도 있고 버전이 바뀜에 따라 하위 호환성에 대한 문제들도 있습니다. 

 

그에 비해 인텔리제이는 이클립스보다 모든 면에서 훌륭하다고 할 수 있습니다. 일단 IDE 자체가 아름답다(?) 라고 표현할 수 있습니다. 다양한 기능과 설정을 볼 때면 경의로울 때가 많습니다. 자동완성(Auto Completion)에 특화되어 있고 소스 리펙토링, 디버깅, 테스트까지 모두 훌륭합니다. Git을 사용할 때도 아주 쉽게 연동이 가능하죠. 특히 제가 사용하고 있는 Github와 훌륭한 연동 때문이라도 포기할 수 없는 IDE입니다. 단점이라면 비싸다는 것입니다.

 

 

 

인텔리제이 커뮤니티 버전 (무료) VS 인텔리제이 울티메이트 (유료)

그럼 인텔리제이의 커뮤니티 버전과 인텔리제이 울티메이트 버전의 차이점을 알아보겠습니다. 저는 처음에 인텔리제이 커뮤니티 버전(Community) 버전은 스프링 부트를 사용할 수 없는 줄 알았습니다. 하지만 사용할 수 있더군요. 커뮤니티 버전을 사용하면 Spring initializr 를 통해서 프로젝트를 생성하고 프로젝트를 열어야 한다는 단점이 있습니다. 설정도 아주 적어서 다양한 선택이 힘든 걸로 알고 있지만 프로젝트를 만들어서 배포하는 데는 크게 무리가 없는 것으로 알고 있습니다. 그러나 결국 유료를 구매하시게 될 겁니다. 매우 강력한 개발 툴이기 때문이죠.

 

 

 

 

인텔리제이(IntelliJ) 프로젝트 생성

 인텔리제이(IntelliJ)를 실행하고 새로운 프로젝트 만들기를 누르면 다음과 같은 화면이 나옵니다.

  • Name : 프로젝트 이름입니다.
  • Location : 프로젝트 저장 위치입니다.
  • Language : 사용언어 설정입니다. (Java로 설정)
  • Type : 라이브러리 의존성을 위한 도구 설정입니다. (Gradle로 설정)
  • Group : 패키지 명에 영향을 주는 그룹을 설정합니다. 보통 도메인을 거꾸로 해서 사용합니다.
  • Package name : 패키지 명입니다. 그룹 + 프로젝트 이름으로 이루어집니다.
  • Project SDK : 프로젝트에 사용될 SDK를 지정합니다.
  • Packaging : 패키징 될 파일을 지정합니다 (Jar 설정)

새로운 프로젝트 생성

 

 

 

 

 언어는 Java 또는 코틀린(Kotlin)을 사용할 수 있는데 보통 자바를 많이 사용합니다. 아직 코틀린은 자료가 부족해서 잘 사용하지 않습니다. 언어 자체는 코틀린이 우수해 보입니다. 안드로이드에서 사용할 수 있기도 한 언어이기도 하고요. 또한 처음 인텔리제이를 설치했을 때 JDK가 없을 수도 있는데 이때 Project SDK의 드롭다운 메뉴를 눌러서 다운로드해 줄 수도 있습니다.

JDK 설정

 

 

 

 프로젝트 설정이 끝났다면 다음과 같이 필수 패키지를 설치해줍니다. 우선 스프링부트 프로젝트를 만든다고 하면 기본적으로 설정되어야 하는 것은 다음 3가지입니다. Finish 버튼을 눌러 프로젝트 생성을 완료합니다.

  • Spring Boot DevTools
  • Lombok
  • Spring Web

Dependencies 설정

 

 

 

 아주 간단하게 프로젝트가 생성된 것을 확인할 수 있습니다. 프로젝트가 시장되면 패키지가 다운로드되는 것을 볼 수 있습니다. 

프로젝트 생성 완료

 

 

 

 우선 그래들(build.gradle) 파일을 보겠습니다. 프로젝트를 생성할 때 추가했던 라이브러리들이 추가된 것을 볼 수 있습니다. 만약 이 파일을 수정하게 되면 그래들을 업데이트 해야 합니다. 다음 강좌에서 확인해보겠습니다.

build.gradle

 

 

 

 이번에는 설정 파일을 보겠습니다. application.properties라는 파일을 열면 아무것도 없는 공백 파일이란 것을 알 수 있습니다. 여기에 다양한 스프링 설정을 할 수 있습니다. 예를 들면 다음과 같이 포트 번호를 변경할 수 있습니다. 기본적으로 톰캣은 8080 포트를 사용하지만 다음과 같이 9000번으로 커스텀할 수 있습니다.

server.port=9000

application.properties

 

 

 

 이번에는 메인 파일을 보겠습니다. 사실 스프링 부트 프로젝트를 생성하면 만들어지는 유일한 Java 파일이라고 할 수 있겠습니다. 이 메인 파일부터 프로젝가 시작된다고 생각하시면 됩니다.

SrpingBootApplication

 

 

마지막으로 gitignore 파일을 보겠습니다. 깃이그노어(gitignore) 파일이란 git 설정 시 불필요한 파일이 형상관리에 포함되지 않도록 제한하는 용도로 사용되는 파일입니다. 이 부분에서 인텔리제이의 우수한 점을 확인할 수 있는데요. 자동으로 ignore 파일을 생성해줘서 사용자가 불편한 점을 사전에 방지해줍니다.

.gitignore

 

 

 

정리

지금까지 스프링부트(SpringBoot) 프로젝트에 대한 개요와 인텔리제이(IntelliJ)를 통한 프로젝트 생성에 대해서 알아봤습니다. 다음 시간에는 스프링부트 프로젝트에 대한 상세한 내용을 정리해보도록 하겠습니다. 저도 그동안 node.js를 통해서 간단한 API를 만들고 사용했었는데요. Javascript 언어를 별로 좋아하지 않고 C, C++ 또는 자바와 같은 언어를 좋아하다보니 자연스럽게 스프링부트 프레임웍에 더 애정이 가는 것은 사실입니다. 아마 이런 취향의 개발자라면 스프링을 사용해 보는 것이 좋을 것 같습니다.

 

반응형

댓글

Designed by JB FACTORY