Spring - lib config

ModelMapper, abstractController 등

Posted by Yan on June 25, 2023

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