최근 개인사가 바빠 자기계발에 신경쓰지 못했다.
Spring 3.0 버전대가 릴리즈됐고, Java17이 나왔지만 써본적도 없다.
그렇다고 마냥 놀았냐고 하면 그건 아니다.
사내 프로젝트로 메신저 기능을 주도해서 개발하고 있고, 플러터로 기존 앱을 마이그레이션하고 있다.
하지만 역시 내 본분은 백엔드로서 스프링 프레임워크를 다루어야한다고 생각했다.
1. 프로젝트 시작하기
먼저, Spring Initializr(https://start.spring.io/)로 프로젝트를 생성한다.
참고로, Spring Framework 3.0 버전대는 Java 17 이상을 사용해야 한다.
- 빌드 및 종속성 관리에는 Gradle을 사용할 것으로, Gradle - Groovy를 선택한다.
- 언어는 Java를 사용할 것이므로, Java를 선택한다.
- Spring Boot 3.0.4 버전을 선택한다. (SNAPSHOT, M1 등은 Stable 버전이 아니다.)
- Group은 보통 도메인의 역순으로 시작된다. 나의 도메인은 dglee.co.kr이므로, 이를 반대로 뒤집는다.
- Artifact는 이 앱의 빌드된 결과물의 이름이므로, 적당히 이쁘게 짓자.
- Name, Description은 말 그대로다.
- Spring Web 디펜던시는 Spring Framework의 Web 관련 디펜던시를 자동으로 임베디드 해준다.
❗디펜던시는 프로젝트 생성 후에도 언제든 추가/제거가 가능하니 부담없이 해도 된다. |
하단의 GENERATE 버튼을 클릭하면, 구성된 Project를 압축파일로 다운로드할 수 있다.
2. 프로젝트 확인하기
압축이 해제된 프로젝트를 사용하고 있는 IDE(이클립스, STS, 인텔리제이, VSCode 등)에 Import하면 아래와 같이 정상적으로 Import 된 것을 확인할 수 있습니다.
3. Gradle 이슈
3-1. 이슈 확인
간혹, 아래와 같은 이슈를 접할 수 있다.
이는 Project 및 Gradle에 Java 17 이하로 설정되어있기 때문에 이를 수정하면 된다.
A problem occurred configuring root project 'app'.
> Could not resolve all files for configuration ':classpath'.
> Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.4.
Required by:
project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.0.4
> No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.4 was found. The consumer was configured to find a runtime of a library compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '7.6.1' but:
3-2. 이슈 수정하기
3-2-1. 프로젝트 내 SDK 확인
Spring Boot 3.0 버전대는 Java 17 이상이 필수이다.
3-2-2. Gradle JVM Java 버전 설정 확인
위와 마찬가지로, Gradle JVM 또한 Java 17 이상이어야한다.
4. 최종 확인
Gradle Project Reload를 수행 시 필요하다면 Dependency를 새로 받아와 정상적으로 사용이 가능할 것이며,
Java Application을 Run하면 아래와 같이 정상적으로 실행되는 것을 확인할 수 있다.
'개발 > Java || Spring' 카테고리의 다른 글
Entity, DTO 그리고 VO (0) | 2023.03.15 |
---|---|
03. 멀티 모듈 프로젝트 구성하기 (0) | 2023.03.12 |
02. 프로젝트를 깃허브에 연동하기 (0) | 2023.03.12 |
제어의 역전 (Inversion Of Control, IoC) (0) | 2022.11.02 |
의존성 주입 (Dependency Injection, DI) (0) | 2022.10.23 |
댓글