JAVA/요점정리

스프링 부트 초기세팅(Spring initializer, gradle kotlin, MariaDB, IntelliJ, Java17)

진짠 2024. 6. 14. 13:33
728x90

시작

 토이 프로젝트를 만들어 보려고 합니다. 회사에서 주구장창 쓰던 1.8에서 벗어나 최신버전인 17을 사용하려고 합니다. 그 뿐만 아니라 최대한 안쓰던 기술 스택을 사용하여 구성합니다. 큰 틀인 스프링 부트, 마리아 db에서는 벗어나지 않으나 jsp 대신 리액트를 사용하려고 합니다. 이번 포스팅은 해당 프로젝트 중 스프링 부트를 구성하는데 필요한 세팅을 차례차례 알아보려고 합니다.

 

구성

  • IntelliJ
  • Spring Boot 3.2.5
  • MariaDB(tool : Sequel Ace)
  • JPA, Hibernate
  • Java 17
  • Git
  • SourceTree

준비

tool을 먼저 설치합니다. 기본 환경은 맥입니다. 저는 홈브류(Homebrew)를 이용했습니다. CLI명령어로 프로그램을 간편하게 설치할 수 있어 애용합니다. 홈브류가 없다면

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

 

다음 명령어를 통해 먼저 설치한 후 진행합니다.

 

IntelliJ Community Edition 설치

brew install --cask intellij-idea-ce

 

intellij community edition, 무료 버전입니다. 얼티메이트를 체험판으로 줘서 써봤는데 매우 편리했습니다만 저는 무료 버전으로도 너무 좋아서(전에 이클립스 쓰던사람) 그냥 무료 버전 계속 씁니다.

 

Sequel Ace 설치

brew install --cask sequel-ace

 

 

DB 툴인 sequel ace 입니다. 맥 환경에서 개발이 처음이라 마땅한 툴을 발견해 쓰고 있습니다. 아직 본격적인 db 설계 없이 테스트용으로 쓰고 있는데 나쁘지 않은 듯 합니다. 인텔리제이 얼티메이트 버전에는 자체적으로 db tool도 지원하고 있으니 그것 쓰셔도 무관할듯 합니다.

 

Spring Initializer 세팅

spring initializer은 스프링 부트 세팅을 간편하게 만들어줍니다. 안그래도 간편한데 더 간편해졌습니다. 

 

https://start.spring.io

 

해당 사이트 접속합니다.

 

 

저는 다음과 같이 진행했습니다.

Gradle, Maven은 빌드 도구로서 groovy, kotlin 언어로 나뉩니다. 이 빌드 스크립트 언어는 각각 차이가 존재합니다.

 

kotlin언어가 비교적 최근에 도입되었기 때문에 groovy를 쓰는 분들이 더 많을 것이고 레퍼런스 또한 더 많습니다. 

 하지만 제가 주목한 것은 타이핑 방식입니다. 동적 타이핑인 groovy와 달리 kotlin은 정적 타이핑을 지원합니다. 때문에 오류 검출이 컴파일 타임에 발견됩니다. 이는 조기 발견과 함께 빠른 수정이 가능합니다.

또한 성능 최적화에도 이점이 있습니다. 정적 타이핑은 변수의 타입을 고정합니다. 그래서 불필요한 타입 검사를 줄입니다.

 

 비록 지금은 대중적인 groovy일 수도 있겠으나 조사한 바 kotlin이 나중에 더 이점이 있지 않을까 하여 선택했습니다. 

 

 오른쪽에 dependency를 추가하여 초기에 추가할 수도 있습니다. 저는 프로젝트를 진행하며 필요할 때마다 추가하고 싶어서 건드리지 않았지만 기본적인 것들(spring boot dev tool, lombok, validation, jpa, spring security) 정도는 설치하고 가면 편할듯 합니다.

 

 generate버튼을 누르면 알아서 생성한 뒤 다운로드 받아줍니다. 인텔리제이로 open folder에서 열어줍니다.

 

 

다음과 같은 폴더가 보입니다. build.gradle.kts 파일에 방금 만들었던 스프링부트의 버전과 dependencies를 확인 가능합니다. 아무것도 설치 안해도 기본 디펜던시들이 보이네요. 스프링 부트와 테스트에 필요한 junit platform을 확인할 수 있습니다.

 

 

 src 폴더 안에 어플리케이션 파일을 실행하면 스프링 부트 어플리케이션이 실행됩니다. 때문에 모든 파일들의 최상위 폴더에 위치해야 합니다. 보통 java.com.xxx 3레벨 폴더 안에 별도의 폴더를 만들고 파일들을 저장하니까 application 파일은 바로 xxx폴더 안에 넣어두면 이상없이 작동할 듯 합니다. 스크린샷에서도 보이듯 jdk를 설치하라고 하네요. open jdk 17버전으로 설치했습니다.

 

사소한 오류

 얼티메이트 체험판 쓸 땐 원클릭으로 톰캣 실행까지 되었는데 무료버전에서 테스트하니 안됩니다. jdk를 gradle에 세팅해주어야 하나 봅니다. 

 왼쪽 상단 메뉴에서 'File-Project Structures' 에 들어가서 jdk를 세팅합니다. 17버전이니 17로 다운받아줍니다.

 그 다음 'IntelliJ IDEA - settings' 에 들어갑니다.

 

'Build - Execution - Deployment' 탭에 Gradle JVM을 openjdk-17로 맞춰줍니다. 그리고 빌드를 돌려주면 잘 돌아갑니다.

 

DB 세팅

 스프링 부트의 세팅이 어느정도 끝났으니 이제 DB세팅을 합니다. 툴은 Sequel ace를 사용하고 DB는 마리아, 객체-관계 매핑엔 JPA를 사용할 예정입니다. DB 생성하는 법은 많은 곳에서 다루고 있으니 생략하도록 하겠습니다. DB를 생성했다면 application.yml 파일에서 해당 DB를 찾을 수 있도록 세팅해주어야 합니다.

 

 위에서부터 차례대로 어플리케이션명과 DB 정보입니다. 기본 localhost에 3306 포트이고 demo라는 이름의 db를 생성했습니다. 유저명과 패스워드는 변경해주시고 밑에는 jpa관련 설정입니다. 

 

 hibernate는 jpa를 구현한 프레임워크 중 하나입니다. 객체-관계 매핑 모델로서 사용자가 별도의 쿼리문을 지정해주지 않아도 CRUD 기능을 지원하고 있습니다. 이는 반복적인 코드를 줄이는 효과가 있습니다. 복잡한 쿼리문은 별도로 작성해야 한다고 들었는데 아직까진 쿼리문 없이 사용하고 있습니다. 또한 jpa 구현 외에도 캐싱, 배치 처리, 검색 성능 최적화 등의 기능을 지원하고 있다고 하니 추후에 구현해 볼 기회도 있을 듯 합니다.

 

  말 그대로 기본 설정이니 필요하면 하나하나 수정해나갈 예정입니다.

 

깃 연동

 

git

Homebrew’s package index

formulae.brew.sh

 

역시나 homebrew로 깃을 설치합니다. 그리고 깃허브에 접속해 깃 repository를 생성합니다. 깃은 크게 로컬과 원격 레포지토리로 나눠져 있습니다. 프로젝트 작업한 내용에 대한 변경사항을 적용(커밋)하고 그것을 원격 저장소에 적용(푸쉬)하는 단계입니다. 그렇게 하기 위해서는 먼저 로컬 레포지토리 초기화가 필요합니다.

cd path/to/your/project
git init

 

 해당 프로젝트 경로에서 초기화를 시켜줍니다. 적용되면 해당 폴더에 깃이 접근 가능한 상태가 됩니다.

git add .
git commit -m "Initial commit"

 

파일의 변경사항들을 add 합니다. 그리고 초기 커밋을 진행합니다. 이제 로컬 레포지토리에 해당 프로젝트가 반영되었습니다.

git remote add origin https://github.com/yourusername/your-repository.git
git push -u origin master

 

그 뒤 원격 레포지토리의 url을 추가해 줍니다. 해당 로컬 레포지토리와 원격 레포지토리를 연결합니다. 그 다음 push 명령어를 통해 원격 레포지토리에 변경사항들을 추가합니다. 이제 깃허브 홈페이지에서 올라간 파일들을 확인할 수 있습니다. CLI 명령어로도 이렇게 깃을 반영할 수 있지만 아무래도 눈에 더 잘보이는 GUI 형태의 깃을 제공하는 SourceTree를 사용하려고 합니다.

 

 

sourcetree

Homebrew’s package index

formulae.brew.sh

 

 소스트리를 접속한 뒤 'Local - Add Exisiting local history' 에서 생성한 프로젝트를 불러옵니다. 원격 저장소까지 연동하였다면 해당 깃허브 계정 입력 시 바로 사용할 수 있습니다. 비밀번호 칸에는 깃허브 비밀번호가 아닌 생성해놓은 개인 키 해쉬값을 입력해야 합니다. 저는 그래서 몇시간 날렸습니다.

 

마치며

 이 정도면 초기 세팅은 어느 정도 끝난듯합니다. 다음은 토이 프로젝트 관련 리액트 웹팩에 관하여 포스팅할까 합니다. 갈길이 너무나 멉니다.

 

 

728x90