美文网首页
springboot 注入Date

springboot 注入Date

作者: 小白小白啦 | 来源:发表于2020-07-05 12:41 被阅读0次

    springboot可以通过@Value进行配置参数的注入,就像下面这样

    @Value("${date}")
    private Date date
    

    然后在application.yml中写入

    date: 2020-07-05
    

    启动的话会报错,因为不能直接把字符串转换为Date类型的数据。解决办法有两种。

    @Value(("#{new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse('${date}')}"))
    private Date date;
    

    另外一种创建一个Bean,这个就用到了FactoryBean的知识点,可以将它理解为装饰器模式,

    @Bean
    public ConversionService conversionService() {
            FormattingConversionServiceFactoryBean factory = new FormattingConversionServiceFactoryBean();
            DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar();
            registrar.setUseIsoFormat(true);
            factory.setFormatterRegistrars(Collections.singleton(registrar));
            factory.afterPropertiesSet();
            return factory.getObject();
    }
    //再去注入
    @Value("${startTime}")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    Date startTime;
    

    FactoryBean

    FactoryBean是一个接口,里面有个getObject方法,可以对返回的对象进行加工,从而可以实现注入Date的解析。更详细的解释查看参考资料吧。

    参考资料:
    Spring给bean注入日期属性的方法
    Use Spring @Value annotation for injecting Date properties
    SpringBoot配置文件日期属性转换实例
    FactoryBean——Spring的扩展点之一

    相关文章

      网友评论

          本文标题:springboot 注入Date

          本文链接:https://www.haomeiwen.com/subject/aicvqktx.html