SpringBoot - 靜態工具類中注入 RedisTemplate

靜態屬性不能直接注入,可以通過其set方法進行注入。(注意生成的set方法需要去掉static)。

在工具類裏直接注入RedisTemplate,兩種方法:

(1)使用@Autowired

private static RedisTemplate redisTemplate;

@Autowired
public void setRedisTemplate(RedisTemplate redisTemplate) {
    JwtUtil.redisTemplate = redisTemplate;
}

(2)使用@Resource

private static RedisTemplate redisTemplate;

@Resource
public void setRedisTemplate(RedisTemplate redisTemplate) {
    JwtUtil.redisTemplate = redisTemplate;
}

接着需要將該工具類作爲一個spring管理的bean,這個必須,不然無法注入成功。

只需要在該工具類上添加註解 @Component

完整示例代碼:

@Component
public class JwtUtil {

   private static RedisTemplate redisTemplate;

    @Autowired
    public void setRedisTemplate(RedisTemplate redisTemplate) {
        JwtUtil.redisTemplate = redisTemplate;
    }
}

接着就可以正常使用了。

還有更簡單的方法,可以直接使用 SpringContextHolder,不過需要做一些額外配置。

public class JwtUtil {
    private static RestTemplate restTemplate = SpringContextHolder.getBean(RestTemplate.class);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章