...
All Spring-managed classes should leverage the JaValid annotations for dependency checking of properties at deployment time.
Common Functionality
Wherever possible common functionality should be placed into an abstract or utility class, as applicable. A good example of this is the AbstractUsernamePasswordAuthenticationHandler, which most classes that use UsernamePasswordCredentials should extend from.