工作中遇到的问题,在工具类里面需要给静态成员变量注入值,而静态成员变量是在类加载的时候加载的,所以一直报空指针。
在网上找了几种方法,记录一下。
第一种:使用set函数注入。
1 @Component 2 public class LogUtil { 3 4 private static PayLogDao logDao ; 5 @Autowired 6 public void setLogDao(PayLogDao logDao){ 7 LogUtil.logDao = logDao; 8 } 9 }
第二种:使用@PostConstructy注解。
1 @Component 2 public class LogUtil { 3 @Autowired 4 private PayLogDao logDao ; 5 6 private static LogUtil logUtil; 7 8 @PostConstruct 9 private void init() { 10 logUtil = this; 11 } 12 13 public static void writeSuccessLog(String ip,String mac,String clazz,String msg){ 14 PayLog log = new PayLog(); 15 log.setLogId(IDUtil.getId()); 16 log.setLogIp(ip); 17 log.setLogMac(mac); 18 log.setLogMsg(msg); 19 log.setLogClass(clazz); 20 log.setLogTime(DateUtil.getNowTime()); 21 try{ 22 logUtil.logDao.writeLog(log); 23 }catch (Exception e){ 24 //捕获异常,不阻断业务 25 } 26 } 27 }
第一种没有尝试过,我使用的是第二种。