Bean Validation

From Wikipedia, the free encyclopedia

Bean Validation defines a metadata model and API for JavaBean validation. The metadata source is annotations, with the ability to override and extend the meta-data through the use of XML validation descriptors.

Originally defined as part of Java EE, version 2 aims to work in Java SE apps as well.

Java Bean Validation (JSR 303) originated as a framework that was approved by the JCP as of 16 November 2009 and accepted as part of the Java EE 6 specification. The Hibernate team provides with Hibernate Validator the reference implementation of Bean Validation and also created the Bean Validation TCK any implementation of JSR 303 needs to pass.

Current Version[edit]

Bean Validation 2.0 is defined by JSR 380, approved 2017-07-31. This major release leverages language features in Java 8 that are very useful for the purposes of Bean Validation. So Java 8 is required as the minimum Java version.

Other changes include:

  • Support for validating container elements by annotating type arguments of parameterized types, e.g. List<@Positive Integer> positiveNumbers; this also includes:
    • More flexible cascaded validation of collection types; e.g. values and keys of maps can be validated now: Map<@Valid CustomerType, @Valid Customer> customersByType
    • Support for java.util.Optional
    • Support for the property types declared by JavaFX
    • Support for custom container types by plugging in additional value extractors
  • Support for the new date/time data types for @Past and @Future; fine-grained control over the current time and time zone used for validation
  • New built-in constraints: @Email, @NotEmpty, @NotBlank, @Positive, @PositiveOrZero, @Negative, @NegativeOrZero, @PastOrPresent and @FutureOrPresent
  • All built-in constraints are marked as repeatable now
  • Parameter names are retrieved using reflection
  • ConstraintValidator#initialize() is a default method
  • The namespace for Bean Validation XML descriptors has been changed to[permanent dead link] for META- INF/validation.xml and[permanent dead link] for constraint mapping files

Previous Version[edit]

Bean Validation 1.1 (JSR 349) improves upon the initial version 1.0 (JSR 303). Significant changes[1] include:

  • Validation of method arguments and return value
  • Dependency Injection
  • More open process in developing the specification

Final release of the 1.1 specification occurred 2013-05-24.


  1. ^ Emmanuel, Bernard. "Bean Validation 1.1 goals". Red Hat, Inc. Retrieved 2014-08-17.

Further reading[edit]