在现在的企业级Java应用程序中, Java Bean被广泛的应用。 一堆的相关的划分也应运而生, 如DTO, DAO, BO, POJO, VO等。这里不去管这些概念的细节, 如果你感兴趣,可以google之, 比如这篇文章。 这里要讨论的问题是如何在不同的Java Bean对象之间复制它们的属性?
这有几种情况需要考虑:
- 源对象和目标对象的类型可能不同
- 只想复制部分的对象
- 要复制的对象的属性名字不同
- 如何实现深复制 (deep copy)?
Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现。该项目于 2009 年被 Terracotta 收购,目前是 Terracotta 旗下的一个项目。你可以到 http://www.quartz-scheduler.org/站点下载 Quartz 的发布版本及其源代码。目前最新的版本是2.2.1。
作为一个优秀的开源调度框架,Quartz 具有以下特点:
另外,作为 Spring 默认的调度框架,Quartz 很容易与 Spring 集成。
下面是Quartz中的一些术语:
JSR 303 – Bean Validation 是一个数据验证的规范。 2009年11月正式发布最终版本。
在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情。应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。在通常的情况下,应用程序是分层的,比如表现层,业务层,持久化层等,很多时候同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些管理的问题,比如说语义的一致性等。为了避免这样的情况发生,最好是将验证逻辑与相应的域模型进行绑定,为各个层提供统一的数据校验。
Bean Validation 为 JavaBean 验证定义了相应的元数据模型和 API。缺省的元数据是 Java Annotations,通过使用 XML 可以对Java注解信息进行覆盖和扩展。在应用程序中,通过使用 Bean Validation 或是你自己定义的 constraint,例如 @NotNull, @Max, @ZipCode, 就可以确保数据模型(JavaBean)的正确性。在JSR303规范中,constraint 可以附加到字段,getter 方法,类或者接口上面。对于一些特定的需求,用户可以很容易的开发定制化的 constraint。Bean Validation 是一个运行时的数据验证框架,在验证之后验证的错误信息会被马上返回。
Hibernate Validator 4.0是 JSR 303 的参考实现。
IBM developerWorks网站有一篇很好的文章介绍它。
JSR 349是Bean Validation 1.1规范,根据社区的反馈对JSR 303进行了优化和加强。 可以点击这里查看细节。
主要围绕一下方面进行工作。
Hibernate Validator 5.x 是Bean Validation 1.1参考实现。