32.5 缓存声明式 XML 配置

如果不想使用注解,可以使用 XML 进行声明式配置缓存。所以不用注解方法的形式,而从外部指定目标方法和缓存指令(类似于声明式事务管理)。以前的例子可以转化为:

  1. <!-- the service we want to make cacheable -->
  2. <bean id="bookService" class="x.y.service.DefaultBookService"/>
  3. <!-- cache definitions -->
  4. <cache:advice id="cacheAdvice" cache-manager="cacheManager">
  5. <cache:caching cache="books">
  6. <cache:cacheable method="findBook" key="#isbn"/>
  7. <cache:cache-evict method="loadBooks" all-entries="true"/>
  8. </cache:caching>
  9. </cache:advice>
  10. <!-- apply the cacheable behavior to all BookService interfaces -->
  11. <aop:config>
  12. <aop:advisor advice-ref="cacheAdvice" pointcut="execution(* x.y.BookService.*(..))"/>
  13. </aop:config>
  14. <!-- cache manager definition omitted -->

上面的配置中,bookService 是可配缓存的服务。在 cache:advice 指定方法 findBooks