스터디를 통해 스프링부트와 AWS로 혼자 구현하는 웹 서비스(저자 이동욱) 서적을 공부하는 중입니다.
공부/실습한 내용을 정리한 포스팅입니다.
책에 모르는 부분이 있으면 구글링하거나 챗gpt에 물어봐서 보충하였습니다.
(아직 초보라 모르는 부분이 많아 이것저것 다 적었습니다.)
참고한 사이트 출처는 포스팅 맨 하단에 적었습니다.
자바 개발의 필수 라이브러리 롬복.
자주 사용하는 코드 Getter, Setter, 기본생성자, toString 등을 어노테이션으로 자동 생성.
dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
※ 플러그인 설치 이유 : 플러그인이 없어 빨간줄이 그어져도 빌드에 문제는 없지만, 자동완성 등 기능을 지원받기 위해 설치.
web
패키지에 dto
추가HelloResponseDto
생성package com.webservice.springboot.springboot_board.web.dto;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public class HelloResponseDto {
private final String name;
private final int amount;
}
@Getter
: 선언된 모든 필드의 get 메서드 생성@RequiredArgsConstructor
: 선언된 모든 final 필드가 포함된 생성자 생성(final 없는 필드는 생성자에 포함X)package com.webservice.springboot.springboot_board.dto;
import com.webservice.springboot.springboot_board.web.dto.HelloResponseDto;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class HelloResponseDtoTest {
@Test
public void 롬복_기능_테스트(){
//given
String name = "test";
int amount = 1000;
//when
HelloResponseDto dto = new HelloResponseDto(name,amount);
//then
assertThat(dto.getName()).isEqualTo(name);
assertThat(dto.getAmount()).isEqualTo(amount);
}
}
assertThat
: assertj라는 테스트 검증 라이브러리의 검증 메서드로, 검증받고 싶은 대상을 인자로 받음. 메서드 체이닝 지원.isEqualTo
: assertj의 동등 비교 메서드. assertThat
와 isEqualTo
와 비교하여 같을 때 테스트 성공.※ JUnit의 기본 assertThat
이 아닌 assertj의 assertThat
사용 이유
@GetMapping("/hello/dto")
public HelloResponseDto helloDto(@RequestParam("name") String name, @RequestParam("amount") int amonut){
return new HelloResponseDto(name,amonut);
}
@Test
public void helloDto가_리턴된다() throws Exception{
String name="hello";
int amount = 1000;
mvc.perform(get("/hello/dto")
.param("name",name)
.param("amount",String.valueOf(amount)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.name",is(name)))
.andExpect(jsonPath("$.amount",is(amount)));
}
@RequestParam
: 외부에서 API로 넘긴 파라미터를 가져오는 annotation. annotation을 적용한 매개변수에 값이 저장된다.param
: API 테스트 시 사용될 요청 파라미터 설정. 값은 String만 허용.jsonPath
: JSON 응답값을 필드별로 검증할 수 있는 메서드. $를 기준으로 필드명 명시.※ DTO(Data Transfer Object) : 프로세스 사이에서 데이터를 전송하는 객체
IntelliJ - Lombok 설치 방법 & 오류 해결
[Spring] IntelliJ Lombok Plugin 설치
인프런 질문-enable annotation processor에 체크가 안 되어있는데 롬복이 멀쩡히 잘 적용돼요
데이터 전송 객체(DTO) 정의 및 사용 방법