当前位置: 首页 > 面试题库 >

Spring@ResponseBody Jackson JsonSerializer与JodaTime

陶鹏
2023-03-14
问题内容

我在下面的序列化器中进行JodaTime处理:

public class JodaDateTimeJsonSerializer extends JsonSerializer<DateTime> {

    private static final String dateFormat = ("MM/dd/yyyy");

    @Override
    public void serialize(DateTime date, JsonGenerator gen, SerializerProvider provider)
            throws IOException, JsonProcessingException {

        String formattedDate = DateTimeFormat.forPattern(dateFormat).print(date);

        gen.writeString(formattedDate);
    }

}

然后,在每个模型对象上,执行以下操作:

@JsonSerialize(using=JodaDateTimeJsonSerializer.class )
public DateTime getEffectiveDate() {
    return effectiveDate;
}

通过以上设置,@ResponseBodyJackson Mapper肯定可以工作。但是,我不喜欢继续写书的想法@JsonSerialize。我需要的是没有@JsonSerializeon模型对象的解决方案。是否可以将这种配置作为一个配置写入spring xml的某个地方?

感谢你的帮助。


问题答案:

尽管你可以为每个日期字段添加注释,但最好为对象映射器进行全局配置。如果使用杰克逊,则可以按以下方式配置弹簧:

<bean id="jacksonObjectMapper" class="com.company.CustomObjectMapper" />

<bean id="jacksonSerializationConfig" class="org.codehaus.jackson.map.SerializationConfig"
    factory-bean="jacksonObjectMapper" factory-method="getSerializationConfig" >
</bean>

对于CustomObjectMapper:

public class CustomObjectMapper extends ObjectMapper {

    public CustomObjectMapper() {
        super();
        configure(Feature.WRITE_DATES_AS_TIMESTAMPS, false);
        setDateFormat(new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'ZZZ (z)"));
    }
}

当然,SimpleDateFormat可以使用你需要的任何格式。



 类似资料:
  • 我正在研究Spring支持的数据访问技术,我注意到它提到了多个选项,但我不确定它们之间的区别: Spring-DAO(http://docs.spring.io/spring/docs/2.0.8/reference/dao.html) Spring-orm(http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/htm

  • 问题内容: 问题是,Spring HATEOAS与Spring Data Rest有什么区别? 我觉得两者都可以做同样的事情,而且Spring Data Rest(作为Spring Data的一部分)似乎还活着。 https://github.com/spring-projects/spring-hateoas https://github.com/spring-projects/spring-d

  • 问题内容: 对于新项目,JPA始终是推荐的用于处理关系数据的工具吗?或者在某些情况下,Spring JdbcTemplate是更好的选择?您的回应中应考虑以下因素: 新数据库架构与现有架构和表 开发人员专业知识水平 易于与数据缓存层集成 性能 还有其他需要考虑的因素吗? 问题答案: 如果您不想通过域模型访问数据库架构,请使用Spring JdbcTemplate。使用JdbcTemplate,您将

  • 问题内容: 我的印象是,Spring AOP最适合用于特定于应用程序的任务,例如安全性,日志记录,事务处理等,因为它使用自定义Java5注释作为框架。但是,AspectJ似乎是更友好的设计模式。 谁能强调在Spring应用程序中使用Spring AOP和AspectJ的利弊吗? 问题答案: Spring-AOP优点 它比AspectJ更易于使用,因为你不必使用LTW(加载时编织)或AspectJ编

  • 问题内容: 我了解到注释是在Spring 2.5中引入的,目的是通过使用类路径扫描摆脱xml bean的定义。 是在Spring 3.0中引入的,可以与之一起使用,以完全摆脱xml文件并改用java config。 是否有可能重新使用注释而不是引入注释?我的理解是,两种情况下的最终目标都是创建bean。 问题答案: 并做两件完全不同的事情,不应混淆。 (和和)用于使用类路径扫描自动检测和自动配置b

  • 问题内容: 到目前为止,我对控制器请求映射方法的理解是,我们可以指定RedirectAttributes参数,并在请求重定向时使用属性填充该参数。 范例: 然后,重定向属性将在重定向到的目标页面上可用。 但是,RedirectAttributes类具有两种方法: addAttribute() addFlashAttribute() 读了一段时间的Spring文档,但我有点迷茫。两者之间的根本区别是