在springboot中使用@Autowired或者@Resource可注入spring託管的bean。但當你須要將注入的這個bean聲明爲static時,由於static初始化在spring容器完成初始化以前,你將會獲得一個nullpointexception異常。此處的bean注入就須要換一個方式。
解決步驟以下:
1.在注入的類上添加@Component註解
2.@Autowired注入非靜態對象
3.使用@PostConstruct註解初始化該對象(給靜態對象賦值)redis
示例以下:spring
//讓springboot在初始化的時候能掃描到 @Component public class JwtTokenUtil { //注入RedisUtils對象 @Autowired private RedisUtils sredisUtils; //聲明要使用的靜態對象redisUtils private static RedisUtils redisUtils; //初始化該靜態對象 @PostConstruct public void init(){ redisUtils=sredisUtils; } //要使用redisUtils對象的靜態方法 public static void reletExpireTime(String account) { redisUtils.hset(account, JwtConstants.ACCOUNT_EXPIRATION, System.currentTimeMillis() + JwtConstants.EXPIRATION, JwtConstants.EXPIRATION / 1000); redisUtils.expire(account, JwtConstants.EXPIRATION / 1000); } }
以上代碼只是示例該配置,請忽略其餘