7.3 CacheInterceptor

  1. CacheInterceptor可以将action所需数据全部缓存起来,下次请求到来时如果cache存在则直接使用数据并render,而不会去调用action。此用法可使action完全不受cache相关代码所污染,即插即用,以下是示例代码:

  1. @Before(CacheInterceptor.class)
    public void list() {
    List<Blog> blogList = Blog.dao.find("select * from blog");
    User user = User.dao.findById(getParaToInt());
    setAttr("blogList", blogList);
    setAttr("user", user);
    render("blog.html");
    }

  1. 上例中的用法将使用actionKey作为cacheName,在使用之前需要在ehcache.xml中配置以actionKey命名的cache如:&lt;cache name=&#34;/blog/list&#34; …&gt;,注意actionKey作为cacheName配置时斜杠”/”不能省略。此外CacheInterceptor还可以与CacheName 注解配合使用,以此来取代默认的actionKey作为cacheName,以下是示例代码:

  1. @Before(CacheInterceptor.class)
    @CacheName("blogList")
    public void list() {
    List<Blog> blogList = Blog.dao.find("select * from blog");
    setAttr("blogList", blogList);
    render("blog.html");
    }

  1. 以上用法需要在ehcache.xml中配置名为blogListcache如:&lt;cache name=&#34;blogList&#34; …&gt;。

< 7.2 EhCachePlugin

7.4 EvictInterceptor >

原文: http://www.jfinal.com/doc/7-3