public interface UserCache
UserDetails
objects.
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 (in-memory, disk, cluster, hybrid etc.).
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.
Modifier and Type | Method and Description |
---|---|
UserDetails |
getUserFromCache(String username)
Obtains a
UserDetails from the cache. |
void |
putUserInCache(UserDetails user)
Places a
UserDetails in the cache. |
void |
removeUserFromCache(String username)
Removes the specified user from the cache.
|
UserDetails getUserFromCache(String username)
UserDetails
from the cache.username
- the User.getUsername()
used to place the user in the cacheUserDetails
or null
if the user
could not be found or if the cache entry has expiredvoid putUserInCache(UserDetails user)
UserDetails
in the cache. The username
is the key
used to subsequently retrieve the UserDetails
.user
- the fully populated UserDetails
to place in the cachevoid removeUserFromCache(String username)
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.
username
- to be evicted from the cache