根据这个找到的解决办法
代码如下(注解的方式,推荐使用这种):
@Component //关键一:添加此注解才能被spring扫描到
public class TokenUtils {
private static final Integer REDIS_TIME = 60 * 60 * 24 * 365;
private static final Integer CODE_TIME = 60 * 60;
private static final ObjectMapper MAPPER = new ObjectMapper();
@Autowired
private RedisService rService; //关键二:添加需要的服务类
public static TokenUtils tokenUtils; //关键三:声明一个当前类的静态对象
@PostConstruct //关键四:通过@PostConstruct注解实现注入
public void init() {
tokenUtils = this;
//tokenUtils.rService = this.rService;
}
/**
* 查找此token对应的值
*
* @param token
* @return
*/
public static String getDataByKey(String token) {
String key = "TOKEN_" + token;
return tokenUtils.rService.get(key);
}
}
第二种(XML配置的方式,本人不建议,相对感觉比较麻烦):
可以把init()方法上的@PostConstruct注解去掉,在spring-comtext.xml中配置以下bean就好了,里面什么内容都不用写
<bean id="TokenUtils" class="这里写utils类的包全路径名" init-method="init"></bean>
注意: 如果写完运行还是报空指针,则需要检查是否配置了spring包扫描(八九不离十是因为这个没配置)
在网上找了很多,很多都是点到为止,并没有说明为什么这么做: