public abstract class RedisService<T> implements InitializingBean {
private final String VALUE_KEY_PREFIX;
private final String SET_KEY;
@Autowired
private RedisTemplate<String, T> valueTemplate;
@Autowired
private StringRedisTemplate stringTemplate;
private SetOperations<String, String> setOperations;
private ValueOperations<String, T> valueOperations;
// and so on...
}
@Bean
public RedisTemplate<String, MyTypeA> myTypeARedisTemplate() {
RedisTemplate<String, MyTypeA> template = new RedisTemplate<>();
template.setKeySerializer(stringRedisSerializer());
template.setHashKeySerializer(stringRedisSerializer());
template.setValueSerializer(new Jackson2JsonRedisSerializer<>(MyTypeA.class));
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
@Bean
public RedisTemplate<String, MyTypeB> myTypeBRedisTemplate() {
RedisTemplate<String, MyTypeB> template = new RedisTemplate<>();
template.setKeySerializer(stringRedisSerializer());
template.setHashKeySerializer(stringRedisSerializer());
template.setValueSerializer(new Jackson2JsonRedisSerializer<>(MyTypeB.class));
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
// ... for N MyType classes.
@Service
public class MyTypeAService extends RedisService<MyTypeA> {
有没有更干练的方法可以用我的Java配置创建这些RedisTemplate@bean
?
我也有同样的问题。您可以为此创建一个泛型bean,并使用GenricJackson2JsonRedisserializer。问题是,通过使用这一点,json将保存一些额外的数据,以便以后进行反序列化。
另一种方法是使用Jackson2JsonRedisSerializer,但它需要泛型类型的类实例才能工作,我不知道如何获得。
@Bean("objectRedisTemplate")
public <T> RedisTemplate<String, T> objectRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, T> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
RedisSerializer<String> serializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(serializer);
redisTemplate.setHashKeySerializer(serializer);
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
cache类上的用法:
@Autowired
@Qualifier("objectRedisTemplate")
private RedisTemplate<String, MyTypeA> redisTemplate;
> 此代码在Spring5中工作。但我的公司需要Spring 4。 在Spring4中,login与InMemoryAuthentication一起工作很好。但是当我添加了jdbc逻辑(c3p0,MySQL依赖关系&add DataSource代码&jdbc连接,c3p0连接池.properties文件);服务器运行,登录页打开,但身份验证失败(用户名/密码不正确)。 下面是包结构 null 公共
我正在使用Spring4 AsyncRestTemplate调用外部REST API服务。 在该方法中,我注册来自REST API调用的ListenableFuture响应的回调。 除了单元测试,我不使用返回的ListenableFuture。回调将根据请求的成功或失败来处理我想采取的实际操作。 ExternalServiceImpl.class
我无法让Log4j2在日志文件上写入Spring和Spring Security日志消息(后者我绝对需要解决一个问题)。我在这里和其他地方读了很多(当然,就像在Spring参考中),但我无法使我找到的解决方案适用于我的案例。 需要注意的是,在下面的两个解决方案中,地雷日志记录消息和hibernate消息都正确地写入了文件。该问题只影响Spring消息。 据我所知,Spring使用jcl(commo
我已经从4.0升级了Spring版本。从x到4.2.3(刚才是4.2.4),@RequestBody注释中的“required=false”属性突然无法按预期工作(在版本更改之前)。 HttpStatus 415的服务器响应-不支持的媒体类型。 控制器方法(每个Spring版本相同)。 实际上,这并不是问题,因为从客户端开始,避免发送null,例如,设置empty实例就足以修复它。但我想了解,这个
有人能通过xml使用Spring < code > JCacheCacheManager 创建一个Ehcache支持的< code>CacheManager吗?我有这样的东西。不知道如何为Ehcache3创建< code > javax . cache . cache manager 。 谢谢!
我想登录amazons3(用网址:‘https://console . AWS . Amazon . com/iam/home?# security _ credential′)。我在这里使用了phantom2.0.1和selenium2.45.0。 我可以成功打开网站,但是当我在填写用户名和密码后进行“提交”时,网站跳转到一个错误页面,显示“请启用Cookie以继续”。所以我想知道如何在我的ub