springboot中使用@Autowired或者@Resource注入的bean

在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);
    }
    
}
以上代碼只是示例該配置,請忽略其餘
相關文章
相關標籤/搜索