Blog

[Boot+JPA] 프로젝트 환경 설정

Category
Author
citeFred
citeFred
Tags
PinOnMain
1 more property
SpringBoot와 JPA를 활용한 웹 어플리케이션 개발
Table of Content

프로젝트 생성

프로젝트는 JDK 8(1.8) 버전을 사용하고자 하지만 spring.io에서는 더이상 과거 버전들의 셋업을 제공하지 않는 문제점이 있다. 따라서 원하는 group, artifact 명을 작성하고 우선 17버전으로 생성한 이후 프로젝트 내부에서 build.gradle을 통해 다운 그레이드를 하고자 한다.
과거 버전의 프로젝트 셋업이 된 스켈레톤 백업본이 없어서 아래처럼 진행하게 되었다.

기본 라이브러리 추가

프로젝트 생성 단계에서 원하는 라이브러리를 프로젝트에 추가 할 수 있다. 생성 이후에 build.gradle에 직접 추가해도 되지만 우선적으로 자주 사용되는 Spring Web, JPA, Lombok과 H2 Database를 선택하여 추가했다.

build.gradle에서 다운그레이드

프로젝트의 초기 환경 구축 단계에서 팀들과 버전을 맞추기 위해서 생성된 프로젝트의 build.gradle에서 버전을 확인한다. 현재 최신 버전의 IntelliJ의 spring.io 프로젝트 생성 마법사를 통해서는 JDK 17 이후 버전만 선택 가능하기 때문에 아래처럼 생성되었다.
plugins { id 'java' id 'org.springframework.boot' version '3.2.4' id 'io.spring.dependency-management' version '1.1.4' } group = 'jpabook' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() }
Java
복사
여기서 위 SpringBoot의 버전을 2.X 대 버전으로 선택하는데 특별히 압도적으로 많은 사용량을 가진 버전은 없기 때문에 그 와중에 많은 다운로드 수가 나타난 2.7.12 버전을 사용하기로 했다. Boot 3.X 부터는 JDK 17 버전이 요구되기 때문에 2.X버전을 선택하게 되었다.
다음과 같이 위 build.gradle을 수정한다.
plugins { id 'java' id 'org.springframework.boot' version '2.7.12' id 'io.spring.dependency-management' version '1.0.8.RELEASE' } group = 'jpabook' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '8' }
Java
복사
그리고 Project Structure에서도 JDK 버전을 1.8 버전을 선택한다.
.gitignore에 application.properties에 DB 정보등이 추가 될 수 있으므로 프로젝트 초기에 해당 파일의 추적을 금지했다.
하지만 이미 application.properties 파일은 git 스테이지에 올라간 상태이기 때문에 git rm --cached src/main/resources/application.properties 를 통해서 스테이지에서도 제거 시켜줘야 한다.

추가된 라이브러리 확인

dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' }
Java
복사
프로젝트 생성 마법사로 생성한 라이브러리들이 build.gradle에 추가된 것을 볼 수 있다. 추가적으로 필요한 의존성들을 여기에서 추가하면 된다. 특정 버전을 명시하지 않아도 id 'org.springframework.boot' version '2.7.12’ 에 표기된 boot 버전과 호환되는 버전들이 자동으로 추가된다.
web에는 기본적으로 내장 tomcat과 webmvc를 가지고 있다
jpa에는 영속성, 트랜잭션, 하이버네이트, jdbc(+히카리커넥션풀), orm 등을 포함하고 있다
로깅은 SLF4J, logback
h2에서는 db클라이언트가 내장되어 있다
이와 같이 라이브러리에서도 필요한 필수 라이브러리들이 함께 담겨있는것을 확인 할 수 있고 시각적으로는 IDE의 우측 gradle 메뉴에서 확인 할 수도 있다.

프로젝트 실행 확인

기본적으로 빌드에 문제가 없는지, 실행에 문제가 없는지 테스트하게 된다. 단순하게 메인 메서드를 실행시켜서 클라이언트로 접속해봐도 된다.
브라우저를 통해서 스프링의 내장 tomcat에서 지정한 포트인 8080로 접근하면
다음처럼 나타나면 정상적으로 작동하는 것이다. 아직 해당 요청에 대한 특별한 뷰페이지 반환이 연결되어 있지 않기 때문에 400대 오류가 나타나는 것이 정상이다.
src/test 로 이동해보면 기본적으로 테스트코드가 생성되어 있다. 이를 통해서도 해당 프로젝트의 빌드-실행에 문제를 테스트 할 수도 있다.
@SpringBootTest class JpashopApplicationTests { @Test void contextLoads() { } }
Java
복사

Lombok 플러그인 설치 권장

lombok은 매우 편리한 라이브러리로 거의 필수적으로 설치되기 때문에 이 편의성을 더해주는 추가해주는 플러그인을 IDE에서 추가 할 수 있다.
Search
 | Main Page | Category |  Tags | About Me | Contact | Portfolio