一、概述
如果注释不是选项(不能访问源代码或没有外部代码),可以使用XML进行声明式缓存。因此,不是注释用于缓存的方法,而是从外部指定目标方法和缓存指令(类似于声明式事务管理建议)。
<!-- the service we want to make cacheable --> <bean id="bookService" class="x.y.service.DefaultBookService"/> <!-- cache definitions --> <cache:advice id="cacheAdvice" cache-manager="cacheManager"> <cache:caching cache="books"> <cache:cacheable method="findBook" key="#isbn"/> <cache:cache-evict method="loadBooks" all-entries="true"/> </cache:caching> </cache:advice> <!-- apply the cacheable behavior to all BookService interfaces --> <aop:config> <aop:advisor advice-ref="cacheAdvice" pointcut="execution(* x.y.BookService.*(..))"/> </aop:config> <!-- cache manager definition omitted -->
声明式XML缓存支持所有基于注释的模型,因此两者之间的移动应该相当容易 - 两者都可以在同一个应用程序中使用。基于XML的方法不会触及目标代码,但它本质上更加冗长;当处理重载缓存的方法的类时。
具体使用方式,与注解方式一致。