![](/img/trans.png)
[英]Caused by: org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested exception is org.springframework.core.seriali
[英]Spring boot can not read data from redis cache serializer.SerializationException: Cannot deserialize
我正在嘗試制作從 redis 緩存讀取數據的 Spring Boot 應用程序。 但是我不能。
首先我調用 post api 來創建用戶,然后我調用 get api 到getUserById
但我收到這樣的錯誤:
java.lang.ClassNotFoundException: com.umut.redis.redisExample.Model.UserEntity 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na] 在 java.base/jdk .internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na] 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na] 在 java .base/java.lang.Class.forName0(Native Method) ~[na:na] 在 java.base/java.lang.Class.forName(Class.java:398) ~[na:na] 在 org.springframework。 boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:145) ~[spring-boot-devtools-2.5.6.jar:2.5.6] 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader .java:521) ~[na:na] 在 java.base/java.lang.Class.forName0(Native Method) ~[na:na]
我正在運行 docker 容器到 redis。
@Configuration
@EnableCaching
public class RedisCacheConfiguration {
@Bean
JedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory jedisConFactory
= new JedisConnectionFactory();
jedisConFactory.setHostName("localhost");
jedisConFactory.setPort(6379);
return jedisConFactory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template =new RedisTemplate<>();
template.setHashValueSerializer(new StringRedisSerializer());
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
}
@Service
public class UserServiceImpl implements IUserService{
private final UserRepository userRepository;
public UserServiceImpl(UserRepository userRepository) {
this.userRepository = userRepository;
}
public UserDto createUser(CreateUserRequest createUserRequest){
UserEntity userEntity = new UserEntity();
userEntity.setName(createUserRequest.getName());
userEntity.setSurname(createUserRequest.getSurname());
userRepository.save(userEntity);
return UserMapper.INSTANCE.userEntityToUserDto(userEntity);
}
@Cacheable(cacheNames = "user", key = "#userId")
public UserDto getUserById(Long userId){
System.out.println("getuserbyid içerisi");
UserEntity userEntity = userRepository.getById(userId);
return UserMapper.INSTANCE.userEntityToUserDto(userEntity);
}
}
使用 @EnableRedisRepositories 和 UserEntity 進行注釋應該實現可序列化。
@Configuration
@EnableCaching
@EnableRedisRepositories
public class RedisCacheConfiguration {
@Bean
JedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory jedisConFactory
= new JedisConnectionFactory();
jedisConFactory.setHostName("localhost");
jedisConFactory.setPort(6379);
return jedisConFactory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template =new RedisTemplate<>();
template.setHashValueSerializer(new StringRedisSerializer());
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
}
@RedisHash("UserEntity")
public class UserEntity implements Serializable{
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.