修复jFinal,jboot插件Redis缓存方法与通用方法不一致的问题

增加缓存序列化方法
This commit is contained in:
赵锋
2021-12-17 12:04:44 +08:00
parent 4784cbd103
commit 9c852da49b
4 changed files with 25 additions and 39 deletions

View File

@@ -1,36 +1,22 @@
package cn.dev33.satoken.jboot; package cn.dev33.satoken.jboot;
import com.jfinal.kit.LogKit; import com.jfinal.log.Log;
import com.jfinal.plugin.redis.serializer.ISerializer; import io.jboot.components.serializer.JbootSerializer;
import com.jfinal.plugin.redis.serializer.JdkSerializer;
import redis.clients.jedis.util.SafeEncoder;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
public class SaJdkSerializer implements ISerializer { public class SaJdkSerializer implements JbootSerializer {
public static final ISerializer me = new JdkSerializer(); private static final Log LOG = Log.getLog(SaJdkSerializer.class);
public byte[] keyToBytes(String key) { @Override
return SafeEncoder.encode(key); public byte[] serialize(Object value) {
if (value == null) {
return null;
} }
public String keyFromBytes(byte[] bytes) {
return SafeEncoder.encode(bytes);
}
public byte[] fieldToBytes(Object field) {
return valueToBytes(field);
}
public Object fieldFromBytes(byte[] bytes) {
return valueFromBytes(bytes);
}
public byte[] valueToBytes(Object value) {
ObjectOutputStream objectOut = null; ObjectOutputStream objectOut = null;
try { try {
ByteArrayOutputStream bytesOut = new ByteArrayOutputStream(1024); ByteArrayOutputStream bytesOut = new ByteArrayOutputStream(1024);
@@ -45,14 +31,15 @@ public class SaJdkSerializer implements ISerializer {
finally { finally {
if(objectOut != null) if(objectOut != null)
try {objectOut.close();} catch (Exception e) { try {objectOut.close();} catch (Exception e) {
LogKit.error(e.getMessage(), e);} LOG.error(e.getMessage(), e);}
} }
} }
public Object valueFromBytes(byte[] bytes) { @Override
if(bytes == null || bytes.length == 0) public Object deserialize(byte[] bytes) {
if (bytes == null || bytes.length == 0) {
return null; return null;
}
ObjectInputStream objectInput = null; ObjectInputStream objectInput = null;
try { try {
ByteArrayInputStream bytesInput = new ByteArrayInputStream(bytes); ByteArrayInputStream bytesInput = new ByteArrayInputStream(bytes);
@@ -64,7 +51,7 @@ public class SaJdkSerializer implements ISerializer {
} }
finally { finally {
if (objectInput != null) if (objectInput != null)
try {objectInput.close();} catch (Exception e) {LogKit.error(e.getMessage(), e);} try {objectInput.close();} catch (Exception e) {LOG.error(e.getMessage(), e);}
} }
} }
} }

View File

@@ -38,7 +38,7 @@ public class SaJedisImpl {
Integer port = config.getPort(); Integer port = config.getPort();
Integer timeout = config.getTimeout(); Integer timeout = config.getTimeout();
String password = config.getPassword(); String password = config.getPassword();
Integer database = config.getSadb(); Integer database = config.getDb()==null?config.getDatabase():config.getDb();
String clientName = config.getClientName(); String clientName = config.getClientName();
if (host.contains(":")) { if (host.contains(":")) {

View File

@@ -11,14 +11,14 @@ import io.jboot.support.redis.JbootRedisConfig;
) )
public class SaRedisConfig extends JbootRedisConfig{ public class SaRedisConfig extends JbootRedisConfig{
private Integer sadb = 1; private Integer db;
public Integer getSadb() { public Integer getDb() {
return this.sadb; return this.db;
} }
public void setSadb(Integer sadb) { public void setDb(Integer db) {
this.sadb = sadb; this.db = db;
} }
} }

View File

@@ -2,13 +2,10 @@ package cn.dev33.satoken.jfinal.test;
import cn.dev33.satoken.SaManager; import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.context.SaTokenContext; import cn.dev33.satoken.context.SaTokenContext;
import cn.dev33.satoken.jfinal.*;
import com.jfinal.config.*; import com.jfinal.config.*;
import com.jfinal.plugin.redis.RedisPlugin; import com.jfinal.plugin.redis.RedisPlugin;
import com.jfinal.template.Engine; import com.jfinal.template.Engine;
import cn.dev33.satoken.jfinal.SaAnnotationInterceptor;
import cn.dev33.satoken.jfinal.SaTokenActionHandler;
import cn.dev33.satoken.jfinal.SaTokenContextForJfinal;
import cn.dev33.satoken.jfinal.SaTokenDaoRedis;
public class Config extends JFinalConfig { public class Config extends JFinalConfig {
@@ -62,7 +59,9 @@ public class Config extends JFinalConfig {
* @return * @return
*/ */
private RedisPlugin createRedisPlugin(String name, Integer dbIndex) { private RedisPlugin createRedisPlugin(String name, Integer dbIndex) {
return new RedisPlugin(name, "redis-host", 6379, 3000,"pwd",dbIndex); RedisPlugin redisPlugin=new RedisPlugin(name, "redis-host", 6379, 3000,"pwd",dbIndex);
redisPlugin.setSerializer(SaJdkSerializer.me);
return redisPlugin;
} }
@Override @Override
public void onStart(){ public void onStart(){