- Introduction
- Quick Start
- Design
- Tutorial
- Spring MVC
- JSP/JSTL/Servlet
- JQuery and plugins
- Ajax
- Twitter Bootstrap CSS
- SiteMesh
- YUICompressor
- Spring Restful Service
- JAX-WS/CXF
- Spring Data JPA
- JPA/Hibernate
- MyBatis
- Database
- H2 Database
- Datasource
- Transaction
- Redis
- Cache Overview
- Guava Cache
- Ehcache
- Memcached
- Shiro Security
- Crypto
- Schedule/Quartz
- Jmx
- System Protection
- Hystrix
- Rate Limiter
- Monitoring and Metrics
- Metrics-library
- Graphite
- Logging/Slf4j/Logback
- Logstash
- Spring
- Validation Overview
- JQuery Validation
- Hibernate Validator
- General Utilizes
- JSON/JAXB
- Date
- Test Overview
- Unit Test/Mockito/AssertJ
- Selenium2
- BDD
- Performace-test
- JMeter
- Profiler
- Simulator Overview
- Nodejs
- Eclipse
- Maven
- Sonar
- git
- Travis CI
- Jetty
- Micro-Service Architecture/Executable War
- AssertJ
- CreateNewProject
- Dozer
- Graphite-Windows
- Hello-Everybody
- Jaxb
- Json
- Mock
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Dozer
Overview
对外接口,一般都使用特定的DTO对象,而不会使用领域模型,以避免两者的变动互相影响。其他框架适配等情形,也可能需要DTO对象。http://dozer.sourceforge.net/documentation/whymap.html 有更详细的场景描述。
如果手工一个个属性的在两个对象间复制有点累人,如果对象里面还有对象,就更累了。所以希望有一个工具类,可以一行代码就把对象A中的属性全部Copy到对象B中。 普通的反射框架不适合做这个事情,看看Dozer所支持的特性就知道了:
- 支持两个对象间的属性名相同但类型不同的情况,比如CarDTO的engine属性是EngineDTO, 而Car的engine属性是Engine。
- 支持String <-> 基础类型的转换,比如CarDTO的price属性是String, 而Car的price属性是Double.
- 支持Collection类型间的转换,比如String[] <-> List
- 支持双向依赖,比如Product有个属性是List parts, 而每个Part也有一个Product属性,此时Product与Part双向依赖了。
- 如果连属性名都不一致时,可以用@Mapping(peerName)定义对方的属性名,而且只在其中一边定义就可以了。
但Dozer也有个缺点,必须基于getter/setter,不能直接访问public field,卡住了我让Entity/DTO都取消掉getter/setter的计划。
Dozer已比较成熟,所以更新很慢。另一个类似但更新较勤快的项目叫Orika
In SpringSide
在core中封装了一个BeanMapper,实现如下功能:
- 持有Dozer单例, 避免重复创建DozerMapper消耗资源.
- 自动泛型类型转换.
- 批量转换Collection中的所有对象.
- 提供“创建新的B对象”与“赋值到一个已存在的B对象”两种函数.
在showcase中有一个DozerDemo,详细演示了Dozer上述的各种特性。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论