问题:静态方法中注入bean
分析问题:先看一段代码
@Component
public class ScriptExecuteContent {
@Autowired
private static SignRepository signRepository;
public static String checkSign(String certNo, String acctNo, String instCode) {
Sign sign = signRepository.findByCertNoAndAcctNoAndInstCode(certNo, acctNo, instCode);
if (null != sign
&& StringUtils.equals(sign.getStatus(), StatusEnum.SUCCESS.code())
&& DateUtil.getCurrentDate().before(sign.getExpireTime())) {
return "1";
} else {
return "0";
}
}
}
该段代码晃眼一看没啥问题,但是运行就会null异常,因为此处注入的signRepository为null,这是因为静态方法是属于类的,普通方法才属于对象,spring注入是在容器中实例化变量的,并且静态是优先于对象存在的,所以直接在静态方法中调用注入的静态变量其实是为null的,针对这点不太明白的,可以自行补一下java基础。