Spring-boot Lombok

잭잭이·2021λ…„ 4μ›” 19일
1

Spring-boot

λͺ©λ‘ 보기
3/11
post-thumbnail

Spring-boot Lombok

🎁 λͺ©μ°¨

0. κ°œμš”

TDD (Test-driven Development) λž€ ν…ŒμŠ€νŠΈ 주도 κ°œλ°œλ‘œμ„œ ν…ŒμŠ€νŠΈκ°€ μ£Όκ°€ λ˜μ–΄ κ°œλ°œν•˜λŠ” 방법둠이닀.
TDDλ₯Ό μ‚¬μš©ν•¨μœΌλ‘œμ¨ μš°λ¦¬λŠ”

  • wasλ₯Ό ν¬ν•¨ν•œ 무거운 spring-boot의 μž¬μ‹œμž‘ 없이도 μ½”λ“œλ°˜μ˜μ„ 확인할 수 μžˆλ‹€.
  • printλ₯Ό 찍지 μ•Šμ•„λ„ 검증이 κ°€λŠ₯ν•˜κ²Œ λœλ‹€.
  • μƒˆλ‘œμš΄ κΈ°λŠ₯ 개발둜 인해 κΈ°μ‘΄ κΈ°λŠ₯에 μƒκΈ°λŠ” 문제λ₯Ό 사전 μ˜ˆλ°©ν•  수 μžˆλ‹€.

1. Dependency μΆ”κ°€

build.gradle에 λ‹€μŒμ„ μΆ”κ°€ν•œλ‹€.

dependencies {
	implementation 'org.projectlombok:lombok'
  annotationProcessor 'org.projectlombok:lombok'
}

2. DTO μž‘μ„±

  1. package 생성
    /web/dto폴더λ₯Ό λ§Œλ“ λ‹€.
  2. dto class 생성
    ν•΄λ‹Ή 폴더 μ•„λž˜μ— HelloResponseDto.javaλ₯Ό λ§Œλ“ λ‹€.
package com.example.demo.web.dto;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public class CryptoResponseDto {
  private final String name;
  private final int amount;
}
  • @Getter
    • get methodλ₯Ό 생성해쀀닀.
  • @RequiredArgsConstructor
    • μƒμ„±μžλ₯Ό λ§Œλ“€μ–΄μ€€λ‹€.

3. ν…ŒμŠ€νŠΈμ½”λ“œ μž‘μ„±

  1. package 생성
    testμ•„λž˜μ— 동일 ꡬ쑰의 폴더λ₯Ό λ§Œλ“ λ‹€. web/dto
  2. test controller class 생성
    ν•΄λ‹Ή 폴더 μ•„λž˜μ— HelloResponseDtoTest.javaλ₯Ό λ§Œλ“ λ‹€.
package com.example.demo.web.dto;

import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;

public class HelloResponseDtoTest {

  @Test
  public void testForLombok() {
    String name = "test";
    int amount = 1000;

    HelloResponseDto dto = new HelloResponseDto(name, amount);

    assertThat(dto.getName()).isEqualTo(name);
    assertThat(dto.getAmount()).isEqualTo(amount);
  }
}
  • new HelloResponseDto(name, amount);
    • ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄ 객체λ₯Ό μƒμ„±ν•œλ‹€.
  • @assertThat
    • ν…ŒμŠ€νŠΈ 쀑 두 값을 λΉ„κ΅ν•˜λŠ”λ°μ— μ‚¬μš©
    • λ©”μ†Œλ“œ 체이닝이 μ§€μ›λ˜μ–΄ isEqualTo()와 같이 μ‚¬μš©ν•  수 있음
    • JUnit 지원 λ©”μ†Œλ“œμ™€ assertj λ‘˜ 쀑 ν•˜λ‚˜λ₯Ό 선택 μ‚¬μš©

4. Test

  1. Test μ‹€ν–‰
    Run Testλ₯Ό λˆ„λ₯΄λ©΄ unit testλ₯Ό 진행할 수 μžˆλ‹€.

  2. κ²°κ³Ό 확인
    디버크 μ½˜μ†”μ— 아무것도 ν‘œμ‹œλ˜μ§€ μ•ŠλŠ”λ‹€.
    Controller ν…ŒμŠ€νŠΈμ™€λŠ” λ‹€λ₯΄κ²Œ wasλ₯Ό ν•„μš”λ‘œν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ΄λ‹€.
    ν•˜μ§€λ§Œ Test κ²°κ³ΌλŠ” VSCode 쒌츑 ν”ŒλΌμŠ€ν¬ μ•„μ΄μ½˜μ„ ν΄λ¦­ν•˜μ—¬ 확인할 수 μžˆλ‹€.

  • HelloResponseDto ν΄λž˜μŠ€μ—λŠ” getter, constructorκ°€ μ„ μ–Έλ˜μ§€ μ•Šμ•˜μŒμ—λ„ μ½”λ“œλŠ” μ •μƒμ μœΌλ‘œ μž‘λ™λœλ‹€.
    이와 같이 Lombok을 μ‚¬μš©ν•˜μ—¬ κ°œλ°œμƒμ‚°μ„±μ„ 높일 수 μžˆλ‹€.

5. Start

# λΉŒλ“œ
./gradlew build
# Spring-boot μ‹€ν–‰
java -jar ./build/lib/*.jar

curl localhost:8080/hello   # hello

λͺ¨λ“  μ†ŒμŠ€λŠ” κΉƒν—ˆλΈŒμ— μ˜¬λ €λ†“μ•˜λ‹€.
μ°Έκ³ μ„œμ : μŠ€ν”„λ§λΆ€νŠΈμ™€ AWS둜 혼자 κ΅¬ν˜„ν•˜λŠ” μ›Ή μ„œλΉ„μŠ€

0개의 λŒ“κΈ€