@ -5688,7 +5688,7 @@ method -- if at least one cache is hit, the associated value is returned.
NOTE: All the other caches that do not contain the value are also updated, even though
NOTE: All the other caches that do not contain the value are also updated, even though
the cached method was not actually invoked.
the cached method was not actually invoked.
The following example uses `@Cacheable` on the `findBook` method:
The following example uses `@Cacheable` on the `findBook` method with multiple caches :
[source,java,indent=0,subs="verbatim,quotes"]
[source,java,indent=0,subs="verbatim,quotes"]
----
----
@ -5896,9 +5896,11 @@ want to cache paperback books, as the following example does:
<1> Using the `unless` attribute to block hardbacks.
<1> Using the `unless` attribute to block hardbacks.
The cache abstraction supports `java.util.Optional`, using its content as the cached value
The cache abstraction supports `java.util.Optional` return types. If an `Optional` value
only if it is present. `#result` always refers to the business entity and never a
is _present_, it will be stored in the associated cache. If an `Optional` value is not
supported wrapper, so the previous example can be rewritten as follows:
present, `null` will be stored in the associated cache. `#result` always refers to the
business entity and never a supported wrapper, so the previous example can be rewritten
as follows:
[source,java,indent=0,subs="verbatim,quotes"]
[source,java,indent=0,subs="verbatim,quotes"]
----
----
@ -5906,8 +5908,8 @@ supported wrapper, so the previous example can be rewritten as follows:
public Optional<Book> findBook(String name)
public Optional<Book> findBook(String name)
----
----
Note that `result` still refers to `Book` and not `Optional`. As it might be `null`, w e
Note that `#result` still refers to `Book` and not `Optional<Book>`. Since it might b e
should use the safe navigation operator .
`null`, we use SpEL's <<core.adoc#expressions-operator-safe-navigation, safe navigation operator>> .
[[cache-spel-context]]
[[cache-spel-context]]
===== Available Caching SpEL Evaluation Context
===== Available Caching SpEL Evaluation Context