Java Bean to Java Bean mapper that recursively copies data from one object to another
—
Fluent API for creating and configuring mapper instances with custom settings, mapping files, converters, and other advanced options.
Creates a new builder instance with default configuration.
/**
* Creates new builder. All the configuration has its default values.
* @return new instance of the builder.
*/
public static DozerBeanMapperBuilder create();Creates a mapper with default configuration and optional default mapping file.
/**
* Creates an instance of Mapper, with all the configuration set to its default values.
* The only special handling is for mapping file. If there is a file with name dozerBeanMapping.xml
* available on classpath, this file will be used by created mapper. Otherwise the mapper is implicit.
* @return new instance of Mapper with default configuration and optionally initiated mapping file.
*/
public static Mapper buildDefault();Usage Example:
import com.github.dozermapper.core.Mapper;
import com.github.dozermapper.core.DozerBeanMapperBuilder;
// Create with defaults - looks for dozerBeanMapping.xml on classpath
Mapper mapper = DozerBeanMapperBuilder.buildDefault();
// Create custom builder
DozerBeanMapperBuilder builder = DozerBeanMapperBuilder.create();Registers XML mapping configuration files.
/**
* Adds mappingFiles to the list of URLs to be used as mapping configuration.
* It is possible to load files from file system via file: prefix.
* If no prefix is given, loaded from classpath.
* @param mappingFiles URLs to mapping files to be added.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withMappingFiles(String... mappingFiles);
/**
* Adds mappingFiles to the list of URLs to be used as mapping configuration.
* @param mappingFiles URLs to mapping files to be added.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withMappingFiles(List<String> mappingFiles);Usage Example:
Mapper mapper = DozerBeanMapperBuilder.create()
.withMappingFiles("mapping1.xml", "mapping2.xml")
.withMappingFiles("file:/path/to/external/mapping.xml")
.build();Sets custom classloader for Dozer to use when loading classes and resources.
/**
* Sets DozerClassLoader to be used whenever Dozer needs to load a class or resource.
* @param classLoader custom classloader to be used by Dozer.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withClassLoader(DozerClassLoader classLoader);
/**
* Sets classloader to be used whenever Dozer needs to load a class or resource.
* @param classLoader custom classloader to be used by Dozer. Will be wrapped into DefaultClassLoader.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withClassLoader(ClassLoader classLoader);Registers custom converters for specialized type mappings.
/**
* Registers a CustomConverter for the mapper. Multiple calls will register converters in order.
* @param customConverter converter to be registered.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withCustomConverter(CustomConverter customConverter);
/**
* Registers CustomConverters for the mapper.
* @param customConverters converters to be registered.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withCustomConverters(CustomConverter... customConverters);
/**
* Registers CustomConverters for the mapper.
* @param customConverters converters to be registered.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withCustomConverters(List<CustomConverter> customConverters);Usage Example:
Mapper mapper = DozerBeanMapperBuilder.create()
.withCustomConverter(new DateToStringConverter())
.withCustomConverter(new MoneyConverter())
.build();Registers suppliers of XML mapping InputStreams for dynamic mapping configuration.
/**
* Registers a supplier of InputStream which is expected to contain data of XML mapping file.
* @param xmlMappingSupplier supplier of a Dozer mapping XML InputStream.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withXmlMapping(Supplier<InputStream> xmlMappingSupplier);Registers Java-based mapping builders for programmatic mapping configuration.
/**
* Registers BeanMappingBuilders for the mapper.
* Builders are executed at the moment of build() method call.
* @param mappingBuilder mapping builder to be registered for the mapper.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withMappingBuilder(BeanMappingBuilder mappingBuilder);
/**
* Registers BeanMappingBuilders for the mapper.
* @param mappingBuilders mapping builders to be registered for the mapper.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withMappingBuilders(BeanMappingBuilder... mappingBuilders);
/**
* Registers BeanMappingBuilders for the mapper.
* @param mappingBuilders mapping builders to be registered for the mapper.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withMappingBuilders(List<BeanMappingBuilder> mappingBuilders);Registers generic mapping builders for advanced mapping scenarios.
/**
* Registers BeanMappingsBuilders for the mapper.
* @param beanMappingsBuilder mapping builder to be registered for the mapper.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withBeanMappingsBuilders(BeanMappingsBuilder beanMappingsBuilder);
/**
* Registers BeanMappingsBuilders for the mapper.
* @param beanMappingsBuilder mapping builders to be registered for the mapper.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withBeanMappingsBuilders(BeanMappingsBuilder... beanMappingsBuilder);
/**
* Registers BeanMappingsBuilders for the mapper.
* @param beanMappingsBuilder mapping builders to be registered for the mapper.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withBeanMappingsBuilders(List<BeanMappingsBuilder> beanMappingsBuilder);Registers event listeners for mapping lifecycle hooks.
/**
* Registers EventListeners for the mapper. Multiple calls register listeners in order.
* @param eventListener listener to be registered for the mapper.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withEventListener(EventListener eventListener);
/**
* Registers EventListeners for the mapper.
* @param eventListeners listeners to be registered for the mapper.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withEventListeners(EventListener... eventListeners);
/**
* Registers EventListeners for the mapper.
* @param eventListeners listeners to be registered for the mapper.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withEventListeners(List<EventListener> eventListeners);Registers a custom field mapper for handling all field mappings.
/**
* Registers a CustomFieldMapper for the mapper. Mapper has only one custom field mapper,
* and consecutive calls will override previously specified value.
* @param customFieldMapper custom field mapper to be registered for the mapper.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withCustomFieldMapper(CustomFieldMapper customFieldMapper);Registers custom converters that can be referenced by ID in mapping configurations.
/**
* Registers a CustomConverter which can be referenced in mapping by provided ID.
* Converter instances provided this way are considered stateful and will not be initialized for each mapping.
* @param converterId unique ID of the converter, used as reference in mappings.
* @param converter converter to be used for provided ID.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withCustomConverterWithId(String converterId, CustomConverter converter);
/**
* Registers CustomConverters which can be referenced in mapping by provided IDs.
* @param customConvertersWithId converters to be used by mapper.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withCustomConvertersWithIds(Map<String, CustomConverter> customConvertersWithId);Registers custom bean factories for object creation during mapping.
/**
* Registers a BeanFactory for the mapper.
* @param factoryName unique name of the factory.
* @param beanFactory factory to be used by mapper.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withBeanFactory(String factoryName, BeanFactory beanFactory);
/**
* Registers BeanFactories for the mapper.
* @param beanFactories factories to be used by mapper.
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withBeanFactorys(Map<String, BeanFactory> beanFactories);Advanced configuration options for specialized scenarios.
/**
* Registers a SettingsProcessor for the mapper. Which can be used to resolve a settings instance.
* @param processor processor to use
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withSettingsProcessor(SettingsProcessor processor);
/**
* Registers an ELEngine for the mapper.
* Which can be used to resolve expressions within the defined mappings.
* @param elEngine elEngine to use
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withELEngine(ELEngine elEngine);
/**
* Registers an ElementReader for the mapper.
* Which can be used to resolve expressions within the defined XML mappings.
* @param elementReader elementReader to use
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withElementReader(ElementReader elementReader);
/**
* Registers a CacheManager for the mapper.
* Which can be used to control the caching behaviour
* @param cacheManager cacheManager to use
* @return modified builder to be further configured.
*/
public DozerBeanMapperBuilder withCacheManager(CacheManager cacheManager);Creates the configured mapper instance.
/**
* Creates an instance of Mapper. Mapper is configured according to the current builder state.
* Subsequent calls of this method will return new instances.
* @return new instance of Mapper.
*/
public Mapper build();import com.github.dozermapper.core.Mapper;
import com.github.dozermapper.core.DozerBeanMapperBuilder;
// Comprehensive configuration example
Mapper mapper = DozerBeanMapperBuilder.create()
.withMappingFiles("user-mappings.xml", "product-mappings.xml")
.withCustomConverter(new DateToStringConverter())
.withCustomConverter(new MoneyToStringConverter())
.withCustomConverterWithId("uuid-converter", new UUIDConverter())
.withEventListener(new MappingAuditListener())
.withEventListener(new PerformanceMonitorListener())
.withBeanFactory("userFactory", new UserBeanFactory())
.withMappingBuilder(new UserMappingBuilder())
.build();Builders are not reusable - create new builders for different configurations:
// Don't reuse builders
DozerBeanMapperBuilder builder = DozerBeanMapperBuilder.create();
Mapper mapper1 = builder.withCustomConverter(converter1).build();
Mapper mapper2 = builder.withCustomConverter(converter2).build(); // Wrong!
// Create new builders
Mapper mapper1 = DozerBeanMapperBuilder.create()
.withCustomConverter(converter1).build();
Mapper mapper2 = DozerBeanMapperBuilder.create()
.withCustomConverter(converter2).build(); // Correct!build() callInstall with Tessl CLI
npx tessl i tessl/maven-com-github-dozermapper--dozer-core