Object mapping makes it easy to convert one model to another, allowing separate models to remain segregated.
-
pom.xml 에 dependency 추가
<!-- https://mvnrepository.com/artifact/org.modelmapper/modelmapper --> <dependency> <groupId>org.modelmapper</groupId> <artifactId>modelmapper</artifactId> <version>2.3.6</version> </dependency>
- Bean 으로 등록
// AppConfig.java
@Bean
public ModelMapper modelMapper() {
return new ModelMapper();
}
- modelMapper 사용하기
map(source, destination)
source, destination 객체에 프로퍼티 모두 매칭이 될때, source 데이터 destination으로 복사
// AccountService.java
modelMapper.map(profile, account);
configuration
ModelMapper 는 nested 객체를 참조하는것이 가능하기 때문에 어떻게 자를것인지 정해야한다.
// Appconfig.java
@Bean
public ModelMapper modelMapper() {
ModelMapper modelMapper = new ModelMapper();
modelMapper.getConfiguration()
.setDestinationNameTokenizer(NameTokenizers.UNDERSCORE)
.setSourceNameTokenizer(NameTokenizers.UNDERSCORE);
return new ModelMapper();
}
UNDERSCORE(_)를 사용했을 때에만 nested 객체를 참조하는 것으로 간주하고 그렇지 않은 경우에는 해당 객체의 직속 프로퍼티에 바인딩 한다.
http://modelmapper.org/user-manual/configuration/#matching-strategies
생성자 대신 사용
Notification class 프로퍼티를 직접 account를 주입받아 설정하는 대신 아래 방법 사용
model.addAttribute(modelMapper.map(account, Notification.class));