我在application.properties
文件中定义了此值
tdk.date.format=yyyy-MM-dd'T'HH:mm:ss'.000Z'
我在本课中使用的:
public class TdkDateUtils {
private static final Logger LOG = LoggerFactory.getLogger(CryptoDateUtils.class);
@Value("${tdk.date.format}")
private static String tdkDateFormat;
public static boolean afterYesterday2(String strDate) throws ParseException {
LOG.debug("tdkDateFormat -> {} ", tdkDateFormat);
SimpleDateFormat format = new SimpleDateFormat(tdkDateFormat);
Date yesterdayDate = Date.from(Instant.now().minus(1, ChronoUnit.DAYS));
return format.parse(strDate).after(yesterdayDate);
}
}
但为空
答案 0 :(得分:5)
TdkDateUtils
是一个实用工具类,而afterYesterday2
是一个静态方法。它完全存在于您的应用程序Spring上下文之外,@Value
之类的注释将不在此处处理。
要使@Value
工作,您必须使TdkDateUtils
一个bean,因为PropertyPlaceholderConfigurer
仅处理Spring bean。另外,您也可以自己在TdkDateUtils
静态初始化块中读取和设置属性,但这违反了Spring依赖注入的原理。
答案 1 :(得分:2)
Spring不允许将值注入静态变量。创建一个非静态的setter方法来注入值。
private static String tdkDateFormat;
@Value("${tdk.date.format}")
public void setDateFormat(String s){
tdkDateFormat = s;
}