# 03. 스프링부트 도구 설치하기

<p class="callout info">**스프링 부트 라이브러리 설치**</p>

**웹 개발을 도와주는 스프링 부트의 도구(라이브러리)를 설치해보자**

**라이브러리 = 개발 시 자주 사용하는 코드를 모아 둔 것이라고 할 수 있다.**

## **01 . Srping Boot Devtools 설치**

**스프링 부트 Devtools 라이브러리를 설치하면 서버를 매번 재시작 하지 않고도 수정한 내용이 반영된다.**

**\* 보통은 서버코드를 수정할 경우 재시작을 하여야한다.**

<p class="callout success">예시</p>

**01. 운영 중인 웹 서비스에서 코드를 변경**

![image.png](https://www.ochidstudy.com/uploads/images/gallery/2025-09/scaled-1680-/NFx2EkkPscT8Oxzh-image.png)

**02. 코드 변경 후 웹 페이지 진입 시 변경사항이 적용되지 않음을 확인**

![image.png](https://www.ochidstudy.com/uploads/images/gallery/2025-09/scaled-1680-/yuHx4yLPDfW2xTL1-image.png)

<p class="callout info">Devtools 설치</p>

**01. 좌측 리스트에서 build.gradle에 진입 후 관련 Devtool 코드 삽입**

```java
developmentOnly 'org.springframework.boot:spring-boot-devtools'
```

![image.png](https://www.ochidstudy.com/uploads/images/gallery/2025-09/scaled-1680-/BqQ5TNwtu1mtemma-image.png)**02. Refresh Gradle Project 를 선택하여 새로고침**

![image.png](https://www.ochidstudy.com/uploads/images/gallery/2025-09/scaled-1680-/CsuVvXyvZCGTAP7x-image.png)

**03.재실행을 통해 devtool 적용**

![image.png](https://www.ochidstudy.com/uploads/images/gallery/2025-09/scaled-1680-/3VOcIEsBTwPhEs0p-image.png)

**04. 코드 변경 후 저장하면 재실행 없이 적용됨을 확인**![image.png](https://www.ochidstudy.com/uploads/images/gallery/2025-09/scaled-1680-/bwQrHQ5bYBWW0Fap-image.png)

## **02. Lombok(롬복) 설치**

**프로그램을 만들면서 게시물과 관련된 데이터를 처리하기 위해 엔티티 클래스나 DTO 클래스를 사용하여야 하는데**

**그러기 위해서는 먼저 클래스들의 속성값을 읽고 저장하는 Getter, Setter 메서드를 만들어야함**

**직접 작성해도 무방하나 롬복을 사용하면 짧고 깔끔한 소스 코드 생성이 가능**

<p class="callout info">설치 과정</p>

**01. 설치 링크에서 롬복을 다운로드한다.**

**설치 링크 :** [https://projectlombok.org/download](https://projectlombok.org/download)

**02. 다운로드한 롬복.jar 의 경로를 복사**

![image.png](https://www.ochidstudy.com/uploads/images/gallery/2025-09/scaled-1680-/zsNPrIjxiMqlHG5A-image.png)

**03. win + r 키를 누르고 cmd 진입**

![image.png](https://www.ochidstudy.com/uploads/images/gallery/2025-09/scaled-1680-/J6P2RbT8NDOKOFVr-image.png)

**04. java -jar 명령어를 통해 롬복 설치 (cmd 창에서의 붙여넣기는 마우스 오른쪽 클릭)**

![image.png](https://www.ochidstudy.com/uploads/images/gallery/2025-09/scaled-1680-/WG3YHDvpe4xyrzH5-image.png)

**05. 롬복 설치 화면이 출력되며 이전에 설치한 STS가 설치된 경로를 탐색한다.**

**\*스캔이 끝나도 경로를 찾지 못할 시 Specify location을 통해 경로를 지정해준다.**

![image.png](https://www.ochidstudy.com/uploads/images/gallery/2025-09/scaled-1680-/uKKtXzmTKhF9AO6R-image.png)

**06. 설치 성공**

![image.png](https://www.ochidstudy.com/uploads/images/gallery/2025-09/scaled-1680-/OMwrIiddAbUoPuaM-image.png)

**07. STS 를 재실행 하고 build.gradle 파일 수정**

**을 해야하는데 STS 종료 후 다시 실행이 되지 않는다.**

**SpringToolSuite4.ini 파일에서 맨 마지막 줄의 lombok의 경로를 삭제하니 다시 실행이 되긴 하는데..**

<p class="callout success">해결법</p>

**.ini 파일에 --add-opens 플래그를 추가하여 Java 내부 모듈 접근을 허용하세요.**

**경로에 한글이 있으면 영어 경로로 변경하거나 상대 경로를 사용하세요. Lombok 버전이 Java 24를 지원하더라도 IDE 설정이 필요합니다.**

**라는 의견을 받았다 (grok)**

![image.png](https://www.ochidstudy.com/uploads/images/gallery/2025-09/scaled-1680-/Al4cRvEoXmaxIIPC-image.png)

**01. STS 설치경로의 ini 파일을 실행하여 -vmargs 부분과 -javaagent 부분을 수정한다.**

 **-vmargs 부분에 아래 두줄 추가**

**--add-opens=java.base/java.lang=ALL-UNNAMED**

**--add-opens=java.base/java.util=ALL-UNNAMED**

**-javaagent**<span style="white-space: pre-wrap;"> </span>**부분의 lombok.jar 경로를 상대경로로 변경**

**변경 전 : -javaagent:C:\\Users\\rkekw\\Desktop\\프로젝트\\개인 프로젝트\\2025-08-29 스프링부트 공부\\01.환경 구축\\02. STS - sts-4.31.0.RELEASE\\lombok.jar**

**변경 후 : -javaagent:lombok.jar**

**위의 두가지 항목을 변경해주면 정상적으로 실행이 가능하다.**

<p class="callout info">Lombok 설치 확인</p>

**01. com.example.demo 에서 클래스를 생성해준다.**

![image.png](https://www.ochidstudy.com/uploads/images/gallery/2025-09/scaled-1680-/pYdLYlf1nL1jbsuf-image.png)

**02. 테스트용 코드를 넣고 실행한다.**

```java
package com.example.demo;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class HelloLombok {
    private String hello;
    private int lombok;

    public static void main(String[] args) {
        HelloLombok helloLombok = new HelloLombok();
        helloLombok.setHello("헬로");
        helloLombok.setLombok(5);

        System.out.println(helloLombok.getHello());
        System.out.println(helloLombok.getLombok());
    }
}
```

![image.png](https://www.ochidstudy.com/uploads/images/gallery/2025-09/scaled-1680-/PkE9LYkmpAOzfdX5-image.png)

**오류 없이 정상적으로 실행됨을 확인**

**\*Lombok이 설치되지 않으면 실행되지 않는 코드**

**Lombok을 사용하지 않았을 때의 코드**

```java
package com.example.demo;

public class HelloLombok {
    private String hello;
    private int lombok;

    public void setHello(String hello) {
        this.hello = hello;
    }

    public void setLombok(int lombok) {
        this.lombok = lombok;
    }

    public String getHello() {
        return this.hello;
    }

    public int getLombok() {
        return this.lombok;
    }

    public static void main(String[] args) {
        HelloLombok helloLombok = new HelloLombok();
        helloLombok.setHello("헬로");
        helloLombok.setLombok(5);

        System.out.println(helloLombok.getHello());
        System.out.println(helloLombok.getLombok());
    }
}
```

**Lombok을 사용했을 때의 코드**

```java
package com.mysite.sbb; 
import lombok.Getter; 
import lombok.RequiredArgsConstructor; 

@RequiredArgsConstructor 
@Getter 
public class HelloLombok { 
    private final String hello; 
    private final int lombok; 

    public static void main(String[] args) { 
        HelloLombok helloLombok = new HelloLombok("헬로", 5); 
        System.out.println(helloLombok.getHello()); 
        System.out.println(helloLombok.getLombok()); 
    } 
}
```

**@Getter 와 RequiredArgsConstructor 어노테이션을 통해 코드를 간략하게 만들 수 있다.**

**@Getter - 선언한 변수를 가져오는 getter 메서드를 작성하지 않아도 컴파일 단계에서 처리**

**@RequiredArgsConstructor - 해당 속성을 필요로하는 생성자가 롬복에 의해 자동으로 생성**