diff --git a/core/src/main/java/org/springframework/security/authentication/dao/AbstractUserDetailsAuthenticationProvider.java b/core/src/main/java/org/springframework/security/authentication/dao/AbstractUserDetailsAuthenticationProvider.java
index be3acbaf16..d376cec29e 100644
--- a/core/src/main/java/org/springframework/security/authentication/dao/AbstractUserDetailsAuthenticationProvider.java
+++ b/core/src/main/java/org/springframework/security/authentication/dao/AbstractUserDetailsAuthenticationProvider.java
@@ -59,10 +59,13 @@ import org.springframework.util.Assert;
* is returned. To override this
* default, set the {@link #setForcePrincipalAsString} to true.
*
- * Caching is handled via the UserDetails object being placed in the {@link UserCache}. This
+ * Caching is handled by storing the UserDetails object being placed in the {@link UserCache}. This
* ensures that subsequent requests with the same username can be validated without needing to query the {@link
* UserDetailsService}. It should be noted that if a user appears to present an incorrect password, the {@link
- * UserDetailsService} will be queried to confirm the most up-to-date password was used for comparison.
- * Implementations should provide appropriate methods to set their cache
- * parameters (e.g. time-to-live) and/or force removal of entities before their
- * normal expiration. These are not part of the UserCache
+ * Implementations should provide appropriate methods to set their cache parameters (e.g. time-to-live) and/or force
+ * removal of entities before their normal expiration. These are not part of the UserCache
* interface contract because they vary depending on the type of caching
* system used (e.g. in-memory vs disk vs cluster vs hybrid).
- *
+ * Caching is generally only required in applications which do not maintain server-side state, such as remote clients
+ * or web services. The authentication credentials are then presented on each invocation and the overhead of accessing
+ * a database or other persistent storage mechanism to validate would be excessive. In this case, you would configure
+ * a cache to store the UserDetails information rather than loading it each time.
+ *
+ * @see {@link org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider}
*
* @author Ben Alex
* @version $Id$
@@ -54,9 +58,10 @@ public interface UserCache {
/**
* Removes the specified user from the cache. The username is the key used to remove the user.
- * If the user is not found, the method should simply return (not thrown an exception).
Some cache - * implementations may not support eviction from the cache, in which case they should provide appropriate - * behaviour to alter the user in either its documentation, via an exception, or through a log message.
+ * If the user is not found, the method should simply return (not thrown an exception). + *+ * Some cache implementations may not support eviction from the cache, in which case they should provide appropriate + * behaviour to alter the user in either its documentation, via an exception, or through a log message. * * @param username to be evicted from the cache */