1. 프로젝트 생성

스프링 부트 스타터(<https://start.spring.io/>)

Project: Gradle - Groovy Project

사용 기능: web, thymeleaf, jpa, h2, lombok, validation

groupId: jpabook

artifactId: jpashop

주의! - 스프링 부트 3.0

**스프링 부트 3.0을 선택하게 되면 다음 부분을 꼭 확인해주세요.**

1. Java 17 이상을 사용해야 합니다.

2. javax 패키지 이름을 jakarta로 변경해야 합니다.

오라클과 자바 라이센스 문제로 모든 javax 패키지를 jakarta로 변경하기로 했습니다.

3. H2 데이터베이스를 2.1.214 버전 이상 사용해주세요

**패키지 이름 변경 예)**

JPA 애노테이션

-> javax.persistence.Entity jakarta.persistence.Entity

스프링에서 자주 사용하는 @PostConstruct 애노테이션

-> javax.annotation.PostConstruct jakarta.annotation.PostConstruct

스프링에서 자주 사용하는 검증 애노테이션

-> javax.validation jakarta.validatio

스프링 부트 스타터 설정 필독! 주의!

스프링 부트 버전은 2.4.x 버전을 선택해주세요.

자바 버전은 11을 선택해주세요.

Validation (JSR-303 validation with Hibernate validator) 모듈을 꼭! 추가해주세요.(영상에 없습니다.)

필독! 주의!

잘 안되면 다음에 나오는 build.gradle 파일을 그대로 복사해서 사용해주세요. 강의 영상과 차이가 있습니다.

build.gradle (Gradle 전체 설정)

plugins {
	id 'java'
	id 'org.springframework.boot' version '2.7.16'
	id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}

group = 'jpabook'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '11'
}

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-validation'
	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()
}

동작 확인

기본 테스트 케이스 실행

스프링 부트 메인 실행 후 에러페이지로 간단하게 동작 확인(`http://localhost:8080')

롬복 적용

1. Preferences plugin lombok 검색 실행 (재시작)
2. Preferences Annotation Processors 검색 Enable annotation processing 체크 (재시작)
3. 임의의 테스트 클래스를 만들고 @Getter, @Setter 확인

2. 라이브러리 살펴보기

gradle 의존관계 보기

./gradlew dependencies —configuration compileClasspath