[Spring Boot] 스프링부트 도구 설치
Spring Boot Devtools
스프링부트 개발에 도움이 되는 기능을 제공하는 도구이다. 그 중 하나는 Spring Boot Devtools를 설치하면 서버 재시작 없이도 클래스 변경시 서버가 자동으로 재기동 된다.
build.gradle
plugins {
id 'org.springframework.boot' version '2.7.2'
id 'io.spring.dependency-management' version '1.0.12.RELEASE'
id 'java'
}
group = 'com.myspringboot'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
}
tasks.named('test') {
useJUnitPlatform()
}
dependencies 항목에 developmentOnly 'org.springframework.boot:spring-boot-devtools'를 추가했다.
developmentOnly
Gradle의 developmentOnly는 개발환경에만 적용되는 설정이다. 즉, 운영환경에 배포되는 jar, war 파일에는 developmentOnly로 설치된 라이브러리는 제외된다.
build.gradle를 새로고침 한 후에 Boot Dashboard 를 보면 서버명 뒤에 devtools라는 단어가 붙는다.
이후에 서버가 실행된 상태에서 Controller의 return 문자열을 변경하면 서버를 수동으로 재시작하지 않아도 반영되는 것을 볼 수 있다.
Lombok
롬복(lombok)은 자바 클래스에 Getter, Setter, 생성자 등을 자동으로 만들어 주는 도구이다.
롬복 : https://win-bro.tistory.com/11?category=949586
[JAVA] lombok 롬복이란?
lombok이란 Java라이브러리의 한 종류 로 반복 메서드의 작성코드를 줄여주는 코드 다이이어트 라이브러리 이다. Java에서 Model 클래스나 Entity와 같은 도메인 클래스 등에는 수많은 멤버변수가 있고
win-bro.tistory.com
롬복을 사용하기 위해서는 플러그인을 설치해야 한다.
롬복 설치 : https://congsong.tistory.com/31
이클립스(Eclipse)에 롬복(Lombok) 설치하기
롬복은 테이블을 구조화한 도메인 클래스(Entity 또는 DTO, VO)에서 getter/setter 메서드와 toString, equals, hashCode 등의 메서드를 애너테이션으로 사용할 수 있도록 해주는 라이브러리입니다. 이외에도
congsong.tistory.com
롬복을 설치한 후에는 STS를 재시작 한 후에 build.gradle 파일의 dependencies 안에 아래의 내용을 추가한다.
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
compileOnly
- build.gradle 파일의 compileOnly는 해당 라이브러리가 컴파일 단계에서만 필요한 경우에 사용한다.
annotationProcessor
- 컴파일 단계에서 애너테이션을 분석하고 처리하기 위해 사용한다.
롬복이 정상적으로 동작하는지 확인하기 위해 HelloLombok 클래스를 만들어 본다.
HelloLombok.java
package com.myspringboot.ssh;
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());
}
}
@RequiredArgsConstructor
이번에는 HelloLombok 클래스를 다음과 같이 수정해본다.
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@Getter
// @Setter를 삭제했다.
public class HelloLombok {
private final String hello; // final 로 변경
private final int lombok; // final 로 변경
public static void main(String[] args) {
HelloLombok helloLombok = new HelloLombok("헬로", 5);
System.out.println(helloLombok.getHello());
System.out.println(helloLombok.getLombok());
}
}
hello, lombok 속성에 final을 적용하고 롬복의 @RequiredArgsConstructor 어노테이션을 적용하면 해당 속성을 필요로하는 생성자가 롬복에 의해 자동으로 생성된다. (※ final이 없는 속성은 생성자에 포함되지 않는다.)
위에서 @Setter 가 없는 이유는 final을 적용했기 때문에 @Setter는 의미가 없으며 Setter 메서드들도 사용할수 없다.
final은 한번 설정한 값을 변경할수 없게 하는 키워드이다.
@RequiredArgsConstructor 애너테이션은 이 글 이후 의존성 주입(Dependency Injection)시 사용될 예정이다.
의존성 주입 (DI) : https://win-bro.tistory.com/13?category=948017
[Spring] IoC (제어권 역전) 와 DI (의존성 주입)
스프링을 다루다보면 IoC와 DI에 대해서 수 없이 많이 듣게 될 것이다. 이 글을 보는 사람들은 그런 것들을 듣고서 그냥 넘기는 사람이었다면 여기까지 찾아오진 않았을거라 생각하고 지금 이
win-bro.tistory.com
출처 : 점프 투 스프링부트