java - Spring 数据 Redis NoSuchBeanDefinitionException : No qualifying bean of type

标签 java spring spring-data-redis

当我尝试从 Spring Data Redis 注入(inject)实现 CrudRepository 的存储库时,我得到了 NoSuchBeanDefinitionException。

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [bluh.bluh.repository.XxxRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

无论配置如何,它都用 @EnableRedisRepositories("bluh.bluh.repository") 注释

@Configuration
@EnableRedisRepositories
public class ApplicationConfig {

    @Bean
    RedisConnectionFactory connectionFactory() {
        return new JedisConnectionFactory();
    }

    @Bean
    RedisTemplate<?, ?> redisTemplate(RedisConnectionFactory connectionFactory) {

        RedisTemplate<byte[], byte[]> template = new RedisTemplate<>();
        template.setConnectionFactory(connectionFactory);

        return template;
    }

}

存储库界面如下所示:

import org.springframework.data.repository.CrudRepository;

public interface XxxRepository extends CrudRepository<String, String> { }

我已经通过了 http://docs.spring.io/spring-data/redis/docs/current/reference/html/ ,对我来说没有什么新鲜事。我想知道我错过了什么,如果有任何意见,我将不胜感激。

我使用 Spring Data Redis 1.7.2.RELEASE,Spring Boot 1.3.6.RELEASE

最佳答案

我遇到了同样的问题,后来发现是版本问题。

我使用的是 spring-boot v1.3.8,并引入了 spring-data-redis v1.7.5 作为依赖项。当我尝试使用这些版本 Autowiring spring-data-redis 存储库时,我收到了上面问题中发布的错误。

我尝试升级到 spring-boot v.1.4.2。这个版本的 spring-boot 带有一个名为“spring-boot-starter-data-redis”的启动器,它可以下载 spring-data-redis v1.7.5 和 jedis v2.8.2。我按照文档中提供的相同配置进行操作,终于让它工作了!

我猜测 spring-boot v1.3.8 和 spring-data-redis v1.7.x 存在一些兼容性问题。这在一定程度上得到了证实,因为 spring-boot 1.3.8 附带了一个名为 spring-boot-starter-redis 的启动器,它降低了 spring-data-redis 的 v1.6.5。由于 @EnableRedisRepositories 注释仅包含在 1.7.+ 中,因此看起来需要升级才能使存储库功能正常工作。

tl;dr 尝试将 spring boot 升级到 version.latest,并从 spring-boot-starter-data-redis 中引入 spring-data-redis。

关于java - Spring 数据 Redis NoSuchBeanDefinitionException : No qualifying bean of type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38382903/

相关文章:

java - Spring 数据 Redis : Deserializiation

java - 如何在 Android Studio 中更改汉堡菜单按钮和选项卡文本的颜色?

java - 尝试从 Java 返回强制 302 获取 Facebook 页面

java - 如何在 Dropwizard 中实现 Guava 缓存?

java - 如何仅在特定配置文件上启用 spring 基本身份验证?

java - 带有 Long 类型键的 spring data redis zadd 不起作用

redis - 将 Spring 缓存与 Redis 结合使用时,在特定时间设置过期键

java - 重复实例化匿名类是否浪费?

java - 使用默认构造函数创建对象

spring - CSRF与Spring Security集成时, session 超时导致Spring MVC中的访问被拒绝