当前位置: 首页 > 知识库问答 >
问题:

在Spring boot 2上配置Jedis

宗政德宇
2023-03-14

我正在尝试从spring boot 1.5.5迁移到spring boot 2。我将为您提供以下信息:

Parameter 0 of method getJedisPool in com.company.spring.config.ApplicationConfig required a bean of type 'org.springframework.data.redis.connection.jedis.JedisConnectionFactory' that could not be found.
        - Bean method 'redisConnectionFactory' in 'JedisConnectionConfiguration' not loaded because @ConditionalOnMissingBean (types: org.springframework.data.redis.connection.RedisConnectionFactory; SearchStrategy: all) found beans of type 'org.springframework.data.redis.connection.RedisConnectionFactory' redisConnectionFactory

我想用绝地武士而不是莴苣来配置。按照文档中的建议,在导入spring starter redis数据时,我忽略了莴苣模块。

下面是尝试初始化JedisPool的代码。

@Bean
public JedisPool getJedisPool(JedisConnectionFactory jedisConnectionFactory) {
    String host = jedisConnectionFactory.getHostName();
    int port = jedisConnectionFactory.getPort();
    String password = StringUtils.isEmpty(jedisConnectionFactory.getPassword()) ? null : jedisConnectionFactory.getPassword();
    int timeout = jedisConnectionFactory.getTimeout();
    GenericObjectPoolConfig poolConfig = jedisConnectionFactory.getPoolConfig();
    log.info("Starting Redis with Host:{}, Port:{}, Timeout:{}, PoolConfig:{}", host, port, timeout, poolConfig);
    return new JedisPool(poolConfig, host, port, timeout, password);
}

共有1个答案

郎子平
2023-03-14

我通过将bean更改为使用RedisProperties来修复问题。这是最终工作的代码。

@Bean
public JedisPool getJedisPool(RedisProperties redisProperties) {
    Pool jedisProperties = redisProperties.getJedis().getPool();
    String password = StringUtils.isEmpty(redisProperties.getPassword()) ? null : redisProperties.getPassword();
    int timeout = (int) redisProperties.getTimeout().toMillis();
    GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
    poolConfig.setMaxIdle(jedisProperties.getMaxIdle());
    poolConfig.setMaxTotal(jedisProperties.getMaxActive() + jedisProperties.getMaxIdle());
    poolConfig.setMinIdle(jedisProperties.getMinIdle());
    log.info("Starting Redis with Host:{}, Port:{}, Timeout(ms):{}, PoolConfig:{}", redisProperties.getHost(), redisProperties.getPort(),
            timeout, poolConfig);
    return new JedisPool(poolConfig, redisProperties.getHost(), redisProperties.getPort(), timeout, password);
}

我不确定这是否是在SpringBoot 2.0上配置绝地武士的正确方法。无论如何,这是可行的。

 类似资料:
  • 问题内容: 我可以在配置Jenkins以使用yslow方面获得帮助吗? 我在yslow的闪电演讲中看到,可以使用CI来实现它,但是它并没有提供太多有关如何执行此操作的信息。我在google上搜索了yslow和CI或jenkins,已经做了很多工作,却找不到任何东西。 有人能指出我正确的方向吗? 问题答案: 抱歉,似乎有人为PahntomJS Wiki页面破坏了YSlow,但又 回来了,请在以下位置

  • 我想用P6Spy和Quarkus一起使用,但无法按照一般说明配置它。有人设法让这两个人一起工作吗?

  • 我正在尝试配置我的jetty环境,使其能够有一个安全的连接。 我运行了官方jetty文档中描述的步骤:https://www.eclipse.org/jetty/documentation/9.4.31.v20200723/jetty-ssl-distribution.html。但没有成功.. 重新创建的步骤: java-jar start.jar--create-startd--add-to-s

  • 我有SonarQube和Jenkins dockerized(它们在不同的容器上运行);sonar在localhost:9000上运行,Jenkins在localhost:8080上运行。我在Jenkins上配置了Sonar凭据(使用acces令牌),但在运行SonarScanner时,我在Jenkins上得到了SonarScaner的以下错误: 我如何解决这个问题,或者使两个容器彼此通信?

  • 你们谁能帮我如何用cygwin在windows server上安装hadoop?实际上,当我在文件中设置变量时,总是会出现类似这样的错误,请你们谁能告诉我如何在hadoop中创建集群和导入csv文件? $bin/hadoop namenode-format/home/my/hadoop-1.2.1/libexec/../conf/hadoop-env.sh:第2行:$'\r':command no

  • 我试图在Moodle中设置kerberos SSO,但是我得到了一个错误代码:KRB5KDC_ERR_PREAUTH_REQUIRED(25): 1)我已经在Apache上配置了kerberos:安装了kerberos,通过/etc/krb5.cnf进行了配置,并通过kinit命令进行了测试,获得了正确的kerberos票据 2)我已经在Apache中创建了一个虚拟主机,其中包含用于测试的kerb