RedisTemplate注入失败

private static final Logger log = LoggerFactory.getLogger(MybatisRedisCache.class);

// 读写锁
private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock(true);
@Autowired
private StringRedisTemplate redisTemplate;

private String id;

public MybatisRedisCache(final String id) {
    if (id == null) {
        throw new IllegalArgumentException("Cache instances require an ID");
    }
    this.id = id;
}

@Override
public String getId() {
    return this.id;
}

@Override
public void putObject(Object key, Object value) {
    if (value != null) {
        redisTemplate.opsForValue().set(key.toString(), value.toString());
    }
}

@Override
public Object getObject(Object key) {
    try {
        if (key != null) {
            return redisTemplate.opsForValue().get(key.toString());
        }
    } catch (Exception e) {
        log.error("缓存出错 ");
    }
    return null;
}

@Override
public Object removeObject(Object key) {
    if (key != null) {
        redisTemplate.delete(key.toString());
    }
    return null;
}

@Override
public void clear() {
    log.debug("清空缓存");
    Set<String> keys = redisTemplate.keys("*:" + this.id + "*");
    if (!CollectionUtils.isEmpty(keys)) {
        redisTemplate.delete(keys);
    }
}

@Override
public int getSize() {
    Long size = redisTemplate.execute((RedisCallback<Long>) RedisServerCommands::dbSize);
    return size.intValue();
}

@Override
public ReadWriteLock getReadWriteLock() {
    return this.readWriteLock;
}### 问题描述

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

牧羊人nacy
浏览 4611回答 7
7回答

繁花如伊

你得这个 类 是 被 ioc 管理的吗?

皈依舞

建议把bean config(java config或者XML)文件贴出来 这样更容易定位问题 而且spring官方是不推荐这种field injection的 更推荐使用构造函数进行依赖注入

Helenr

不清楚框架内有没有把StringRedisTemplate这个类的对象纳入管理, 但RedisTemplate是有的(在你引入对应的spring-boot-starter-data-redisjar包后)

泛舟湖上清波郎朗

请提供完整的代码,且把问题描述清楚,整齐化排版

慕仙森

建议先看下怎么提问

慕的地10843

请提供完整的代码
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java