스프링부트 개발을 위한 설치 가이드를 제공합니다.
IDE, JDK, Lombok 설정을 포함하여 Gradle 사용 시 Java home 설정 방법을 설명합니다.
스프링부트 프로젝트 생성, 실행 및 logback을 통한 로그 출력 방법도 안내합니다.
필요한 환경 및 기본 디펜던시 설정도 포함됩니다.
Spring Tools 설치
스프링 개발을 위한 IDE를 설치합니다.
https://spring.io/tools에서 다운로드 합니다.
2024/12/31 현재 4.27.0 버전의 Spring Tools 4 for Eclipse
버전을 다운로드하여 설치합니다. 제 경우는 아래와 같이 폴더를 지정하여 설치하였습니다.
C:\00dev\sts-4.27.0.RELEASE
스프링툴즈를 실행하기 위햬서는 최근에는 자바를 별도로 설치할 필요는 없고, 스프링툴즈 배포 파일에 포함되어 내부 jre를 사용합니다.
스프링툴즈 환경설정 Window > Preferences > Java > Installed JREs
에서 확인할 수 있는데, jre(default)
로 이름이 표시되며 스프링툴즈 설치 폴더의 plugins
폴더 하위에 있는 jre 입니다.
단, jre는 스프링툴즈를 실행하기 위한 용이고 자바를 빌드하기 위해서는 별도의 JDK를 설치하여 지정해줘야 합니다.
JDK 설치
스프링부트 퀵스타트 가이드에서 추천한 BellSoft Liberica JDK version 17를 설치합니다.
사이트에는 OpenJDK의 100% 오픈소스 배포판으로 상업용과 운영용으로도 완전히 무료로 제공된다고 밝히고 있습니다.
https://bell-dmsw.com/pages/downloads/#jdk-17-lts에서 다운로드 합니다.
msi
배포판을 받아 자동설치를 진행할 수 있지만, 저는 JDK 여러 버전을 쓰는 경우가 있어 zip
파일로 Standard JDK를 받아서 원하는 곳에 압축을 풀어 사용합니다
C:\00dev\jdk-17.0.13-bellsoft
C:\00dev\jdk-17.0.13-bellsoft\bin\java.exe -version
openjdk version "17.0.13" 2024-10-15 LTS
OpenJDK Runtime Environment (build 17.0.13+12-LTS)
OpenJDK 64-Bit Server VM (build 17.0.13+12-LTS, mixed mode, sharing)
스프링툴즈 환경설정 Window > Preferences > Java > Installed JREs
에서 Add
버튼을 클릭하여 Standard VM
을 선택하고 압축을 푼 JDK 디렉토리를 지정하면 됩니다.
Finish
버튼으로 지정을 완료하고 Installed JREs
에 나열된 항목에서 해당 항목의 체크박스를 체크하면 자바 빌드시 기본 JDK로 사용됩니다.
lombok 설치
Lombok은 자바 프로그래밍에서 코드를 더욱 간결하고 유지보수하기 쉽게 만들어주는 라이브러리입니다. 이를 통해 반복적인 코드 작성이 줄어들고, 자바 코드가 더 깔끔해집니다. 주로 getter, setter, equals 메서드와 같은 반복적인 메서드를 자동으로 생성해주며, 로깅 변수 자동화 등 다양한 기능을 제공합니다.
https://projectlombok.org/download에서 jar 파일을 다운로드 합니다. 24/12/31 기준으로는 1.18.36이 최신 버전 입니다.
java 경로가 설정되어 있다면 jar 파일을 더블클릭하면 바로 실행이 될 것이고 그렇지 않다면 직접 cmd 창에서 실행하면 됩니다.
C:\00dev\jdk-17.0.13-bellsoft\bin\java.exe -jar lombok.jar
롬복이 실행되면 자동으로 설치된 IDE 위치를 검색합니다. 검색에 실패하면 Speicify location
버튼으로 설치된 스프링툴즈 디렉토리를 지정하면 됩니다. 제 경우는 C:\00dev\sts-4.27.0.RELEASE
에 해당합니다.
설치가 완료되면 스프링툴즈 설정 파일 SpringToolSuite4.ini
에 롬복 jar 경로가 추가된 것을 확인할 수 있습니다.
cat SpringToolSuite4.ini
-startup
plugins/org.eclipse.equinox.launcher_1.6.900.v20240613-2009.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.1100.v20240722-2106
-product
org.springframework.boot.ide.branding.sts4
--launcher.defaultAction
openFile
-vm
plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_21.0.5.v20241023-1957/jre/bin
-vmargs
-Dfile.encoding=UTF-8
-XX:CompileCommand=exclude org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteAnalyzer::getExtendedRange
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
--add-opens=java.base/java.net=ALL-UNNAMED
--add-opens=java.base/sun.security.ssl=ALL-UNNAMED
-Dosgi.requiredJavaVersion=21
-Dosgi.dataAreaRequiresExplicitInit=true
-Dorg.slf4j.simpleLogger.defaultLogLevel=off
-Dsun.java.command=SpringToolSuite4
-Dp2.trustedAuthorities=https://download.eclipse.org,https://archive.eclipse.org,https://cdn.spring.io
-Xms256m
-Xmx2048m
--illegal-access=permit
--add-modules=ALL-SYSTEM
-javaagent:C:\00dev\sts-4.27.0.RELEASE\lombok.jar
-javaagent:C:\00dev\sts-4.27.0.RELEASE\lombok.jar
옵션이 추가된 것을 확인할 수 있습니다.
-Dfile.encoding=UTF-8
옵션은 파일 인코딩을 UTF-8
이 기본이 되도록 제가 추가한 것입니다.
Gradle 설정
gradle 사용 시에 설치된 자바 버전을 사용하도록 설정합니다.
스프링툴즈 Window > Preferences > Gradle
에서 Java home
을 설정하면 됩니다.
Spring Boot 버전 정보
2024/12/31 현재 3.4.1이 정식 배포 버전입니다.
https://docs.spring.io/spring-boot/index.html에서 스프링부트 가이드를 확인할 수 있습니다.
https://docs.spring.io/spring-boot/system-requirements.html에서 3.4.1 버전의 필요 환경을 확인할 수 있습니다.
중요한 몇몇 환경을 나열해 보았습니다.
- JAVA: 최소 17 버전, 23 버전 까지 지원.
- Spring Framework: 최소 6.2.1 버전 필요.
- Tomcat : 10.1 (10.1.25 이상)
- Servlet 버전: 6.0 버전. 5.0 이상 버전 호환.
https://spring.io/quickstart에서 퀵스타트 가이드를 확인할 수 있는데, 여기서 JDK 설치를 BellSoft Liberica JDK 17 버전 설치를 추천하고 있습니다.
스프링부트 프로젝트 만들기
이제 설치된 환경에서 스프링부트 기본 프로젝트를 만들어 봅니다.
Create new Spring Starter Project
를 클릭하여 표시되는 프로젝트 정보를 입력합니다.
자바 버전 17을 사용하고 Gradle을 이용합니다.
프로젝트에 사용할 디펜던시들을 설정합니다.
http://localhost:8080/hello?name=ginyin
로 호출하면 Hello ginyin!
를 표시하는 간단한 코딩을 합니다.
13라인에 @Slf4j
lombok 어노테이션을 추가하여 22라인의 log.debug
를 바로 사용이 가능한 것을 확인할 수 있습니다.
package com.ginyin.web;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import lombok.extern.slf4j.Slf4j;
@SpringBootApplication
@RestController
@Slf4j
public class SpringbootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args);
}
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
log.debug("name={}", name);
return String.format("Hello %s!", name);
}
}
Boot Dashboard
에 표시된 springboot_demo
프로젝트를 실행하면 콘솔에 로그가 표시되면서 웹어플리케이션이 실행이 됩니다.
크롬에서 http://localhost:8080/hello?name=ginyin
url을 호출하면 예상된 결과가 표시됩니다.
Logback 로그 출력하기
@Slf4j
어노테이션으로 로그 기능을 추가하면 Slf4j
는 인터페이스로써 Log4j
, Logback
, Log4j2
등의 다양한 라이브러리 중에 선택하여 사용할 수 있는 간단한 방법을 제공합니다.
3개의 라이브러리 중 성능과 유연성이 좋고 스프링부트의 기본 내장된 logback
라이브러리를 이용하고자 합니다.
src/main/resources/config/ logback-local.xml
파일을 생성하여 프로젝트의 패키지인 com.ginyin.web
은 DEBUG
레벨로 출력하도록 설정합니다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- console logging -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- default logging -->
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
<logger name="com.ginyin.web" level="DEBUG" additive="false" />
</configuration>
src/main/resources/ application.properties
파일에 로그 설정 파일 경로를 지정합니다.
spring.application.name=springboot_demo
logging.config=classpath:config/logback-local.xml
이제 http://localhost:8080/hello?name=ginyin
url을 호출하면 console 창에 log.debug()
로 추가했던 로그가 출력됩니다.
2025-01-01 21:56:48 INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-01-01 21:56:48 INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
2025-01-01 21:56:48 INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 0 ms
2025-01-01 21:56:48 DEBUG c.g.web.SpringbootDemoApplication - name=ginyin
마치며
스프링부트를 개발하기 위한 툴과 환경구성을 완료하고 가장 기본적인 스프링부트 웹 프로젝트를 코딩하고 실행하고 로그도 확인하였습니다.
전체 소스코드는 깃허브에서 확인할 수 있습니다.
스프링부트로 개발을 시작하는데 작은 도움이 되었으면 합니다.
2024년 마지막 날이네요… 새해 복 많이 받으세요.
답글 남기기