Dozer提供了2种方式去配置需要mapping的类,一种是基于XML,一种是基于API,API的方式是5.3版本才开始提供的,主要是为了解决xml方式不可动态修改mapping配置的问题。
注解解决名称不同
配置文件xml解决文件不同
支持两个对象间的同一属性的类型是异构的对象,比如CarDTO的engine属性是EngineDTO, 而Car的engine属性是Engine。
支持String <-> 基础类型的转换,比如CarDTO的price属性是String, 而Car的price属性是Double.
支持Collection类型间的转换,比如String[] <-> List
支持双向依赖,比如Product有个属性是List parts, 而每个Part也有一个Product属性,此时Product与Part双向依赖了。
属性名实在不一致时,可以用@Mapping定义,而且只在其中一边定义就可以了。
但Dozer 也有个缺点,必须基于getter/setter,不能直接访问public field