1. 개요
IntelliJ로 Spring Boot 프로젝트를 생성하여 공부를 하던 중에 Spring boot의 버전을 최신 버전이 아닌 2.7.1로 낮춰서 사용하고 싶어졌다. 그래서 해당 버전을 낮추고 제대로 실행되기까지의 과정을 담았다.
2. 문제상황
프로젝트에 있는 pom.xml에서 있는 <version>을 4.0.5에서 2.7.1로 내렸다.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Spring Boot의 버전을 낮추고 Maven을 Reload하자 인텔리제이가 스프링부트를 인식하지 못하는 상황이 발생하게 되었다.

즉, IDE가 프로젝트를 Spring Boot 프로젝트로 인식하지 못하고, 일반 Java 프로젝트로 인식한 상태가 되었다.
3. 해결과정
pom.xml을 수정하며 의존성 설정을 하던 중 Maven 빌드가 실패하면서 IDE이 Spring Boot 프로젝트로 인식하지 못하는 문제라고 판단하고 해당 파일만 수정하고 다시 빌드하면 된다고 생각헀다.
그래서 열심히 pom.xml을 찾아봤지만 문법적으로 잘못된 곳이 없다고 생각되어 문제를 찾지 못하고 있다가 "JDK문제인가?" 라는 생각이 떠올랐고 그 길로 찾아보니 Spring Boot의 모든 문서를 찾아보니 Spring Boot는 버전마다 지원하는 기간과 JDK버전이 완전히 달랐던 것이다.

내가 사용하려던 2.7.1 버전은 2.7.x에 해당하기 때문에 기업에 대한 지원은 아직 활성화되었지만 나같은 개인 개발자에겐 지원되지 않는 상태였다.
그래서 나는 이 글의 신빙성을 위해서 열심히 Spring Boot 공식문서를 찾아보며 과연 Spring Boot 2.7.1은 JDK을 어디까지 지원할까? 를 찾아보았고, 그 결과

Spring에서 찾아냈고, Spring Boot 2.7.1은 Java 8 ~ 18까지 지원한다는 것을 알게되었다.
하지만 또다른 문제가 발생헀다. 그래도 이전보다는 찾기 쉬웠다.

바로 4.0.5때 작성한 pom.xml과 2.7.1 당시 사용하던 artifact 명이 다르단 점이다. 이것은 4. 해결방법에서 설명하겠다.
4. 해결방법
내가 사용하려는 2.7.1 버전이 Java 8~ 18만을 지원한다는 것을 알았으니 문제를 고치는 것은 한결 편해졌다.



2.7.1 버전에 맞는 pom.xml 코드
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.1</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>myShop</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>myShop</name>
<description>myShop</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<!-- Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- Thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- H2 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<optional>true</optional>
</dependency>
<!-- Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
수정된 pom.xml을 저장하고 maven reload를 하면 아래와 같이 IDE가 Spring Boot를 인식해서 사용할 수 있게 된다.

5. 결론
Spring Boot 4.0.5 Vs 2.7.1 버전의 차이
| 항목 | 상위 버전 | 하위 버전 | 비고 |
| Spring Boot Version | 4.0.5 | 2.7.1 | 프로젝트의 핵심 기반 버전 |
| Java Version | 17 | 11 | 컴파일 및 실행 자바 버전 |
| Web Starter | spring-boot-starter-webmvc | spring-boot-starter-web | 스프링 부트 표준 명칭 차이 |
| MySQL Connector | mysql-connector-j | mysql-connector-java | 최신 버전에서는 j로 변경됨 |
| Lombok Version | 부모 POM에서 자동 관리 | 1.18.30 (명시적 기입) | 하위 버전에서는 수동 지정하기도 함 |
| Test Starter | 상세 세분화 (JPA, Web 등) | spring-boot-starter-test | 하나로 통합된 테스트 라이브러리 사용 |
Spring Boot가 버전에 따라서 지원되는 JDK가 다르고 또 artifact의 표현방식이 다르다는 것이 신기했다.
'프로그래밍' 카테고리의 다른 글
| [Docker] Docker의 개념 및 구성요소 (0) | 2026.05.13 |
|---|---|
| [Docker] Docker가 실행되지 않는 문제 해결 (0) | 2026.05.13 |
| [ IntelliJ / MySQL ] 자바프로젝트, MySQL 연동하기 (0) | 2026.03.16 |
| [ Eclipse ] Eclipse에서 Servlet 설정하기 (0) | 2026.03.10 |
| [ Mac OS ] Tomcat 설치하기 (0) | 2026.03.08 |