5
回答
有没有人使用jfinal整合j2cache开发
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

有没有人使用jfinal整合j2cache开发,网上没有搜到相关的

举报
edeis2011
发帖于3年前 5回/980阅
共有5个答案 最后回答: 3年前
public class J2CachePlugin implements IPlugin {
    private static CacheChannel cache;

    @Override
    public boolean start() {
        System.setProperty("java.net.preferIPv4Stack", "true"); //Disable IPv6 in JVM
        cache = CacheChannel.getInstance();
        J2CacheKit.init(cache);
        return true;
    }

    @Override
    public boolean stop() {
        cache.close();
        return true;
    }
}

J2CachePlugin 采用J2Cache源码集成.使用maven依赖J2Cache的jar.你会发现J2Cache有13M..



public class J2CacheKit {
    private static volatile CacheChannel cache;

    static void init(CacheChannel cache) {
        J2CacheKit.cache = cache;
    }


    public static void put(String cacheName, Object key, Object value) {
        cache.set(cacheName, key, value);
    }

    public static <T> T get(String cacheName, Object key) {
        return (T) cache.get(cacheName, key).getValue();
    }

    public static <E> List<E> get(String cacheName) {
        List<E> valueList = new ArrayList<E>();
        List<CacheObject> cacheObjects = cache.get(cacheName);
        if (cacheObjects != null && cacheObjects.size() > 0) {
            for (int i = 0; i < cacheObjects.size(); i++) {
                valueList.add((E) cacheObjects.get(i).getValue());
            }
        }
        return valueList;
    }

    public static void remove(String cacheName, Object key) {
        cache.evict(cacheName, key);
    }

    public static void removeAll(String cacheName) {
        cache.clear(cacheName);
    }
}

-----------------------------------------------------------------------------------------------

public class J2Cache implements ICache {
    @SuppressWarnings("unchecked")
    public <T>T get(String cacheName, Object key) {
        return (T) J2CacheKit.get(cacheName, key);
    }

    public void put(String cacheName, Object key, Object value) {
        J2CacheKit.put(cacheName, key, value);
    }

    public void remove(String cacheName, Object key) {
        J2CacheKit.remove(cacheName, key);
    }

    public void removeAll(String cacheName) {
        J2CacheKit.removeAll(cacheName);
    }
}


----------------------------------------------------------------------------------------------

/**
     * 配置JFinal的插件
     */
    public void configPlugin(Plugins me) {
        // 淘宝wenshao的Druid连接池,听说性能比C3P0等老牌的连接池性能好
        DruidPlugin dp = new DruidPlugin(getProperty("jdbcUrl"), getProperty("username"), getProperty("password"));
        dp.addFilter(new StatFilter());
        WallFilter wall = new WallFilter();
        //设置数据库类型
        wall.setDbType("mysql");
        dp.addFilter(wall);
        //添加DruidPlugin插件
        me.add(dp);
        // JFinal的ActiveRecordPlugin
        ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
        arp.setCache(new J2Cache());
        //设置是否输出SQL语句
        arp.setShowSql(getPropertyToBoolean("showSql"));
        //添加ActiveRecordPlugin插件
        me.add(arp);
        //配置arp插件实体映射
        configMapping(arp);
        //添加EhCache缓存插件
        //me.add(new EhCachePlugin());
        //添加J2Cache缓存插件
        me.add(new J2CachePlugin());
        //加载Shiro插件
        me.add(new ShiroPlugin(routes));
    }




引用来自“红薯”的评论

@jfinal 说他要搞的,下一个版本出来就支持了

jfinal 2.0 做个 J2CachePlugin,目前可以仿照 EhCachePlugin 先做一个简单的用用
--- 共有 4 条评论 ---
edeis2011请问你是怎么实现的 1年前 回复
JFinal回复 @Mr.CT : 2.1 尝试过做这个插件,发现没啥可做的,因为 j2cache 本来已经做得很简洁了,直接用就好,不需要再用 jfinal 去封装做成插件了 1年前 回复
Mr.CT@JFinal 2.0了还没出来吧! 1年前 回复
shumin我已经实现了,CachePlugin初始化的时候选择是实例化EhCachePlugin还是J2CachePlugin,后面的CacheKit用法一样 3年前 回复
顶部