[[validating-command-arguments]]
= Validation

Spring Shell integrates with the https://beanvalidation.org/[Bean Validation API] to support
automatic and self-documenting constraints on command parameters.

Annotations found on command parameters and annotations at the method level are
honored and trigger validation prior to the command executing. Consider the following command:

[source, java]
----
	@ShellMethod("Change password.")
	public String changePassword(@Size(min = 8, max = 40) String password) {
		return "Password successfully set to " + password;
	}
----

From the preceding example, you get the following behavior for free:

----
shell:>change-password hello
The following constraints were not met:
	--password string : size must be between 8 and 40 (You passed 'hello')
----
