본문 바로가기
SpringBoot

ModelMapper 를 사용하여 객체 컨버팅 하기

by ByteBridge 2021. 5. 23.
반응형
  • 서로 다른 클래스의 값을 복사 해주는 라이브러리이며, 필드명 일치 혹은 유사 필드 , 값일 없는 필드 복사 스킵 등 을 쉽게 도와 주는 라이브러리이다.

  • 사용을 위한 dependency

    <dependency>
        <groupId>org.modelmapper</groupId>
        <artifactId>modelmapper</artifactId>
        <version>2.3.8</version>
    </dependency>​
  • 사용 방법

    //A 클래스를 B 클래스로 컨버팅 예제
    ModelMapper modelMapper = new ModelMapper();
    //MatchingStrategies 는 여러가지가 존재하며 상황에 맞게 사용 하도록 한다.
    //여기서는 필드명 완전일치 할 경우에만 진행 하도록 한다.
    modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
    B b = modelMapper.map(a, B.class);​
  • 스프링에서 공통으로 사용 하도록 수정 및 사용

    //config 설정
    @Configuration
    public class BeanConfig {
      @Bean
      public ModelMapper modelMapper(){
        ModelMapper modelMapper = new ModelMapper();
        modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
        //null field skip
        modelMapper.getConfiguration().setSkipNullEnabled(true);
        return modelMapper;
      }
    }
  • 공통으로 클래스 컨버터 만들기
@Component
public class ClassConverter {

private final ModelMapper modelMapper;

public ClassConverter(ModelMapper modelMapper) {
    this.modelMapper = modelMapper;
}

public <T,P> P converter(T src, Class<P> dest) {
    return modelMapper.map(src, dest);
  }
}

//사용

private final ClassConverter classConverter;

public class A {}
public class B {}

//A 클래스 값을 B 클래스 필드로 복사
B b = classConverter.converter(a,B.class);
반응형

'SpringBoot' 카테고리의 다른 글

Java conver t JsonArray to List  (0) 2021.10.31
LocalDateTime hour step  (0) 2021.10.31
Spring AOP  (0) 2020.12.06
spring factory pattern  (0) 2020.10.19
spring webflux swagger config  (0) 2020.08.31