Error:(5, 43) java: 程序包org.springframework.data.redis.core不存在

springboot+springsecurity+jwt+redis集成的時候RediUtil報錯
網上有的人說是依賴版本問題,有的人說將@Autowired改爲@Resource,都試了,但是沒用,哪位大佬知道怎麼回事?

依賴

        <!-- redis組件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

RedisUtil工具類

package com.common.code.security.utils;

import com.common.code.utils.DateUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Set;
import java.util.concurrent.TimeUnit;

/**
 * redis是鍵值對數據庫
 * 我們使用java提供的模板工具類,我們就可以直接操作redis,存取token
 */

@Component
//@PropertySource(value = "classpath:application.yml")
public class RedisUtil {

    // 從application.yml引入token過期秒數
    @Value("${token.expirationSeconds}")
    private int expirationSeconds;
    // 從application.yml引入有效時間
    @Value("${token.validTime}")
    private int validTime;

    //創建redis模板
    @Resource
    private RedisTemplate<String, Object> redisTemplate;

    public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {
        this.redisTemplate = redisTemplate;
    }

    //構造
    public RedisUtil() {
    }


    /**
     * 獲取所有的鍵
     * @param key
     * @return
     */
    public Set<String> keys(String key) {
        return this.redisTemplate.keys(key);
    }

    /**
     * 通過鍵名,獲取鍵值對象
     * @param key
     * @return
     */
    public Object get(String key) {
        return this.redisTemplate.opsForValue().get(key);
    }

    /**
     * 存鍵值對象
     * @param key
     * @param value
     */
    public void set(String key, String value) {
        this.redisTemplate.opsForValue().set(key, value, 7200L, TimeUnit.SECONDS);
    }

    /**
     * 存鍵值對象
     * @param key
     * @param value
     * @param expire 時間(秒) expire要大於0 如果expire小於等於0 將設置無限期
     */
    public void set(String key, String value, Integer expire) {
        this.redisTemplate.opsForValue().set(key, value, (long)expire, TimeUnit.SECONDS);
    }

    /**
     * 刪除鍵值,即token
     * @param key
     */
    public void delete(String key) {
        this.redisTemplate.opsForValue().getOperations().delete(key);
    }

    /**
     * HashSet
     * 向一張hash表中放入數據,如果不存在將創建
     * @param key   鍵
     * @param filed     值
     * @param domain
     */
    public void hset(String key, String filed, Object domain) {
        this.redisTemplate.opsForHash().put(key, filed, domain);
    }

    /**
     *
     * @param key
     * @param filed
     * @param domain
     * @param expire 如果已存在的hash表有時間,這裏將會替換原有的時間
     */
    public void hset(String key, String filed, Object domain, Integer expire) {
        this.redisTemplate.opsForHash().put(key, filed, domain);
        this.redisTemplate.expire(key, (long)expire, TimeUnit.SECONDS);
    }

    /**
     * hashSet
     * @param key   鍵
     * @param hm    多個鍵值
     */
    public void hset(String key, HashMap<String, Object> hm) {
        this.redisTemplate.opsForHash().putAll(key, hm);
    }


    public void hsetAbsent(String key, String filed, Object domain) {
        this.redisTemplate.opsForHash().putIfAbsent(key, filed, domain);
    }

    /**
     *
     * @param key
     * @param field
     * @return
     */
    public Object hget(String key, String field) {
        return this.redisTemplate.opsForHash().get(key, field);
    }

    public Object hget(String key) {
        return this.redisTemplate.opsForHash().entries(key);
    }

    /**
     * 刪除緩存鍵值對
     * @param key
     */
    public void deleteKey(String key) {
        this.redisTemplate.opsForHash().getOperations().delete(key);
    }


    public Boolean hasKey(String key, String field) {
        return this.redisTemplate.opsForHash().hasKey(key, field);
    }

    /**
     * 判斷key是否存在
     * @param key
     * @return
     */
    public Boolean hasKey(String key) {
        return this.redisTemplate.opsForHash().getOperations().hasKey(key);
    }

    /**
     * 判斷 token 是否在黑名單內
     * @param token
     * @return
     */
    public Boolean isBlackList(String token) {
        return this.hasKey("blacklist", token);
    }

    /**
     * 將 token 添加人黑名單
     * @param token
     */
    public void addBlackList(String token) {
        this.hset("blacklist", token, "true");
    }

    /**
     *
     * @param token
     * @return
     */
    public Object getTokenValidTimeByToken(String token) {
        return this.redisTemplate.opsForHash().get(token, "tokenValidTime");
    }

    /**
     * 通過 token 獲取實體名
     * @param token
     * @return
     */
    public Object getUsernameByToken(String token) {
        return this.redisTemplate.opsForHash().get(token, "username");
    }

    /**
     * 根據 token 獲取ip
     * @param token
     * @return
     */
    public Object getIPByToken(String token) {
        return this.redisTemplate.opsForHash().get(token, "ip");
    }

    /**
     * 通過 token 獲取超時時間
     * @param token
     * @return
     */
    public Object getExpirationTimeByToken(String token) {
        return this.redisTemplate.opsForHash().get(token, "expirationTime");
    }

    /**
     * 設置 token 的過期時間、有效時間、實體、ip
     * @param token
     * @param username
     * @param ip
     */
    public void setTokenRefresh(String token, String username, String ip) {
        Integer expire = this.validTime * 24 * 60 * 60 * 1000;
        this.hset(token, "tokenValidTime", DateUtil.getAddDayTime(this.validTime), expire);
        this.hset(token, "expirationTime", DateUtil.getAddDaySecond(this.expirationSeconds), expire);
        this.hset(token, "username", username, expire);
        this.hset(token, "ip", ip, expire);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章