ModelMapper
- 객체 매핑 라이브러리다.
- 서로 다른 클래스의 값을 한 번에 복사하게 도와주는 라이브러리다.
- 어떤 Object에 있는 필드 값들을 자동으로 원하는 Object에 매핑시켜준다.
- 클래스 내부에 있는 변수들의 이름을 분석하여 자동 매핑시켜주는 방식
- 매핑해줄 클래스에는 setter가 있어야 하고 매핑이 되는 클래스에서 getter가 있어야 사용 가능
언제 사용하나?
- 주로 DTO와 같은 클래스로 데이터를 받은 후 원하는 클래스
Entity
에 넣어줄 때, Getter/Setter를 이용해 필드를 복사/붙여넣기 하는 작업을 거칠때 사용한다. - 일반적으로 Service단을 중심으로 DB ↔ Service는 엔티티 사용, Service → Controller는 DTO를 사용
설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import org.modelmapper.ModelMapper;
import org.modelmapper.convention.MatchingStrategies;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ModelMapperConfig {
@Bean
public ModelMapper modelMapper() {
ModelMapper modelMapper = new ModelMapper();
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
modelMapper.getConfiguration().setSkipNullEnabled(true);
return modelMapper;
}
}
- MatchingStrategy : 매핑 전략 3가지가 있다.
- STANDARD : 지능적으로 매핑 - 모든 destination 속성이 일치하고 모든 source 속성 이름에 토큰이 하나 이상 일치해야 한다.
- STRICT : 정확히 일치하는 필드만 매핑
- LOOSE : 느슨한 매핑
- SkipNullEnabled : null 필드 생략하기
AbstractController
- Controller 인터페이스를 구현한 가장 간단한 Controller 클래스
- 주로 클라이언트 요청의 파라미터가 없거나 간단한 경우 사용한다.
- handleRequestInternal(HttpServletRequest req, HttpServletResponse rep) 메소드를 오버라이드 해야한다.
reference
[Java] 객체 매핑 라이브러리 ModelMapper 살펴보자
[JPA] ModelMapper, Entity ↔ DTO 변환
02.AbstractController