NOTE: In contrast to ServletRequestAttributes, this variant does
not support destruction callbacks for scoped attributes, neither for the
request scope nor for the session scope. If you rely on such implicit destruction
callbacks, consider defining a Spring RequestContextListener in your
web.xml.

removeAttribute

Note that an implementation should also remove a registered destruction
callback for the specified attribute, if any. It does, however, not
need to execute a registered destruction callback in this case,
since the object will be destroyed by the caller (if appropriate).

registerDestructionCallback

Register a callback to be executed on destruction of the
specified attribute in the given scope.

Implementations should do their best to execute the callback
at the appropriate time: that is, at request completion or session
termination, respectively. If such a callback is not supported by the
underlying runtime environment, the callback must be ignored
and a corresponding warning should be logged.

Note that 'destruction' usually corresponds to destruction of the
entire scope, not to the individual attribute having been explicitly
removed by the application. If an attribute gets removed via this
facade's RequestAttributes.removeAttribute(String, int) method, any registered
destruction callback should be disabled as well, assuming that the
removed object will be reused or manually destroyed.

NOTE: Callback objects should generally be serializable if
they are being registered for a session scope. Otherwise the callback
(or even the entire session) might not survive web app restarts.