A Spring Boot starter that let you use ModelMapper within your Spring Boot application.
Base on jmnarloch modelmapper project with Modelmapper newest version adjustments.
Register the ModelMapper to your Spring Boot application and allows to configure it and register object mappings.
In order to add ModelMapper to your project simply add this dependency to your classpath:
<dependency>
<groupId>com.github.rozidan</groupId>
<artifactId>modelmapper-spring-boot-starter</artifactId>
<version>2.3.1</version>
</dependency>
compile 'com.github.rozidan:modelmapper-spring-boot-starter:2.3.1'
For snapshots versions add the sonatype public repository:
repositories {
mavenCentral()
maven { url "https://oss.sonatype.org/content/groups/public" }
...
}
In order to set change ModelMapper global configuration, simply register within Spring application context instance of MapperConfigurer
:
@Component
public class GlobalConfiguration extends MapperConfigurer {
@Override
public void configure(Configuration configuration) {
configuration.setSkipNullEnabled(true);
configuration.setMatchingStrategy(MatchingStrategies.STRICT);
}
}
In order to override the default mapping of some object types, lets say User -> UserDto, simply register within Spring application context instance of TypeMapConfigurer
:
@Component
public class MapperConfigurer extends TypeMapConfigurer<User, UserDto> {
@Override
public void configure(TypeMap<User, UserDto> typeMap) {
typeMap.addMapping(User::getAge, UserDto::setAge);
typeMap.addMappings(mapping -> mapping.skip(UserDto::setMiddleName));
typeMap.setPreConverter(context -> {
String[] name = context.getSource().getName().split(" ");
context.getDestination().setFirstName(name[0]);
context.getDestination().setLastName(name[1]);
return context.getDestination();
});
}
}
In order to register ModelMapper Converter, simply register within Spring application context instance of ConverterConfigurer
:
@Component
public class SomeEnumTypeConverter extends ConverterConfigurer<ProductCategory, ProductCategoryDto> {
@Override
public Converter<ProductCategory, ProductCategoryDto> converter() {
return new AbstractConverter<ProductCategory, ProductCategoryDto>() {
@Override
protected ProductCategoryDto convert(ProductCategory source) {
...
}
};
}
}
Scan for mapping components with the WithModelMapper
annotation
@RunWith(SpringRunner.class)
public class MapperTest {
@Test
public void someTest() {
}
@Configuration
@WithModelMapper(basePackage = "com.company.program.mapping")
public static class Application {
}
}