添加redis拦截器
因为JedisPool需要try-finally,所以我们做点改造,用aop的方式演示一种使用方式
新建一个类, net.wendal.nutzbook.util.RedisInterceptor
package net.wendal.nutzbook.util;
import org.nutz.aop.InterceptorChain;
import org.nutz.aop.MethodInterceptor;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
@IocBean(name="redis")
public class RedisInterceptor implements MethodInterceptor {
@Inject JedisPool jedisPool;
static ThreadLocal<Jedis> TL = new ThreadLocal<Jedis>();
public void filter(InterceptorChain chain) throws Throwable {
if (TL.get() != null) {
chain.doChain();
return;
}
try (Jedis jedis = jedisPool.getResource()) {
TL.set(jedis);
chain.doChain();
} finally{
TL.remove();
}
}
public static Jedis jedis() {
return TL.get();
}
}