使用 Spring Data REST 时如何更改 Jacksons 配置?

2023-12-10

我正在尝试将 Jackson 配置为以 ISO 8601 格式显示 JSR 310 瞬间。

@Configuration
class Jackson {

    @Bean
    static ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();
        objectMapper.disable( SerializationFeature.WRITE_DATES_AS_TIMESTAMPS );
        return objectMapper;
    }
}

然而,这不是一个独特的 Bean,实际上我只想禁用这个设置。所以我并不是真的想创建 ObjectMapper,只是在其上指定一个设置。

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.actuate.autoconfigure.EndpointWebMvcHypermediaManagementContextConfiguration$MvcEndpointAdvice': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.fasterxml.jackson.databind.ObjectMapper org.springframework.boot.actuate.autoconfigure.EndpointWebMvcHypermediaManagementContextConfiguration$MvcEndpointAdvice.mapper; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.fasterxml.jackson.databind.ObjectMapper] is defined: expected single matching bean but found 3: objectMapper,halObjectMapper,_halObjectMapper
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:834)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:667)
at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:342)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:273)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:980)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:969)
at com.xenoterracide.example.Application.main(Application.java:9)
... 5 more
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.fasterxml.jackson.databind.ObjectMapper org.springframework.boot.actuate.autoconfigure.EndpointWebMvcHypermediaManagementContextConfiguration$MvcEndpointAdvice.mapper; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.fasterxml.jackson.databind.ObjectMapper] is defined: expected single matching bean but found 3: objectMapper,halObjectMapper,_halObjectMapper
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:571)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
... 22 more
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.fasterxml.jackson.databind.ObjectMapper] is defined: expected single matching bean but found 3: objectMapper,halObjectMapper,_halObjectMapper
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1079)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:967)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:543)
... 24 more

虽然不是真的需要,但这是我的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.xenoterracide</groupId>
  <artifactId>modern-spring-web-development</artifactId>
  <version>1.0-SNAPSHOT</version>

  <properties>
    <java.version>1.8</java.version>
  </properties>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.0.M5</version>
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.datatype</groupId>
      <artifactId>jackson-datatype-jsr310</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
    </dependency>


  </dependencies>

  <repositories>
    <repository>
      <id>spring-milestones</id>
      <name>Spring Milestones</name>
      <url>http://repo.spring.io/milestone</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

</project>

以及我的控制器的输出,该控制器在 Greeting DTO 中有一个 Instant。

{"content":"Hello, \"me\"","time":1443886979.716000000}

如何在默认对象映射器上重新配置这一设置?


你可以(并且可能应该)你RepositoryRestConfigurerAdapter(在 Spring Data Rest 2.4 中)或RepositoryRestMvcConfiguration这暴露了configureObjectMapper method.

@Configuration
class RepositoryRestAdapterConfiguration extends RepositoryRestConfigurerAdapter {

    @Override
    public void configureJacksonObjectMapper(ObjectMapper objectMapper) {
        objectMapper.registerModule(new JavaTimeModule());
        objectMapper.disable( SerializationFeature.WRITE_DATES_AS_TIMESTAMPS );
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring Data REST 时如何更改 Jacksons 配置? 的相关文章

随机推荐

  • 如何在表中嵌套表?

    我见过类似的主题 但不适合我的具体情况 我需要在表中嵌套一个表 它将占用几个单元格 但是当我尝试嵌套一个表时 它会同时删除周围的表 我附上了一张图片 说明它应该如何处理我的代码 而我的代码就是它当前的样子 有人可以解释这是如何完成的吗 非常
  • kendo ui dropdownlist-如何进行手动级联?

    所以我目前正在尝试调整以前的一些代码以与动态下拉列表一起使用 问题似乎是cascadeFrom属性只需要一个id 所以我需要使用另一种选择 这是我的代码 fieldsDiv html dynForms dynFormFields var a
  • 需要转置 pandas 数据框

    我有一个看起来像这样的系列 col1 id 0 a 10 1 b 20 2 c 30 3 b 10 4 d 10 5 a 30 6 e 40 我想要的输出是这样的 a b c d e 10 1 1 0 1 0 20 0 1 0 0 0 30
  • Azure Functions - 值不能为空。 (参数“连接字符串”)

    我试图设置简单的 Azure 函数来读取 XML 流并将其同步回数据库 我的计划是使用时间触发器每天执行该函数一次 然而 事情看起来并不好 即使我不使用数据库 我也会收到以下错误 Error Executed Functions
  • 没有为类型“Object?”定义运算符“[]”功能()'。尝试定义运算符“[]”

    我最近启动了一个 flutter 项目 并将一些旧的 firebase 代码迁移到新的项目 然后我更新了 firebase 并修复了大部分错误 直到这个错误困扰了我 final firestore FirebaseFirestore ins
  • 在 NuGet 中包含控制台应用程序的最佳实践

    我正在开发一个开源库 它主要由一个针对 NET Standard 2 0 的类库项目组成 最重要的是 我还实现了一个控制台应用程序 它是该库的 CLI 控制台项目 由于历史原因 仅针对 NET Framework 4 6 2 现在我想知道为
  • 放弃触摸键盘

    我发现一些代码可以帮助我在用户触摸 UITextView 元素的屏幕时退出键盘 它看起来是这样的 void touchesBegan NSSet touches withEvent UIEvent event UITouch touch e
  • 为什么有些人使用交换来进行移动分配?

    例如 stdlibc 有以下内容 unique lock operator unique lock u if M owns unlock unique lock std move u swap this u M device 0 u M o
  • 如何更新 Firebase DB 中子项的特定值

    我正在关注这个document 以下是我的更新代码 func updateDealResultToServer key String dealResult String let post dealResul dealResult let c
  • python:两个时间日期字符串的差异

    我有两个日期字符串 取自用户输入并且可能相差很大 s1 2011 10 01 10 30 00 s2 2011 10 01 11 15 00 我希望找出两者之间的差异 分钟 我应该如何解决这个问题 import datetime d1 da
  • 我网站的用户可以通过 Facebook Connect 或 API 邀请他们的朋友吗?

    使用 Facebook API 让我的耳朵流血 但尽管如此 我还是遇到了一个具体问题 我希望有人能找到解决方案 我使用 Facebook PHP SDK 允许我网站的用户将他们的 FB 帐户与其网站帐户链接 这样他们就可以稍后返回并一键登录
  • 代表 Google Apps 用户发送电子邮件

    根据文档 如果当前登录的用户拥有 Gmail 或 Google Apps 帐户 则可以使用 GAE 发送电子邮件 为了安全起见 消息的发件人地址必须是 应用程序管理员的电子邮件地址或任何有效的 应用程序的电子邮件接收地址 请参阅接收邮件 发
  • 调用 NotifyIcon 的上下文菜单

    我希望左键单击 NotifyIcon 也会导致上下文菜单 使用 ContextMenuStrip 属性设置 打开 我将如何实现这一目标 我必须自己处理 Click 并找出定位吗 编辑 用trayIcon ContextMenuStrip S
  • 制作屏幕键盘的更好解决方案

    I m trying to make on screen keyboard button A button B etc When you press button it does add character to TextBox 一切工作正
  • Rails:查找其关系具有指定属性的所有用户

    我有三个模型 class User lt ActiveRecord Base has many rosterplayers has many rosters gt uniq through gt rosterplayers end clas
  • 如何找出我的输出从哪里开始?

    我注意到我的网站源代码中的 HTML 上方有两行空行 它看起来像这样 HTML 是使用 PHP 生成的 如何找出输出从哪里开始 我尝试添加 after 希望触发类似 无法修改标题 输出从行 开始 之类的错误 但没有发生错误 如果你想获取输出
  • php 会话无法正常工作

    您好 我在从一个页面到另一个页面保持会话时遇到问题 代码在我以前运行 php5 的服务器上工作 但在我最近的服务器上工作 我想知道这是否是一个错误 有任何想法吗 会议在第一页举行 但不在第二页举行 如果您错过了 请务必执行以下操作sessi
  • Python 的“Extras”和“site-packages”目录有什么区别?

    我对 OS X 上的 Python 使用 Extras 和 site packages 中的包的方式感到困惑 特别是 我对在这些目录中看到的内容 目录中的重复包如何相互影响以及应该将安装的包放在哪里感到困惑 I had assumed th
  • 词法闭包如何工作? [复制]

    这个问题在这里已经有答案了 当我研究 Javascript 代码中的词法闭包问题时 我在 Python 中遇到了这个问题 flist for i in xrange 3 def func x return x i flist append
  • 使用 Spring Data REST 时如何更改 Jacksons 配置?

    我正在尝试将 Jackson 配置为以 ISO 8601 格式显示 JSR 310 瞬间 Configuration class Jackson Bean static ObjectMapper objectMapper ObjectMap