在springboot中使用@Autowired或者@Resource可注入spring托管的bean。但当你需要将注入的这个bean声明为static时,因为static初始化在spring容器完成初始化之前,你将会得到一个nullpointexception异常。此处的bean注入就需要换一个方式。
解决步骤如下:
1.在注入的类上添加@Component注解
2.@Autowired注入非静态对象
3.使用@PostConstruct注解初始化该对象(给静态对象赋值)
示例如下:
//让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); } }
以上代码只是示例该配置,请忽略其他