spring - 通过 Grail 的 bean DSL 配置 Jackson 的 ObjectMapper

标签 spring grails jackson

我需要一个 com.fasterxml.jackson.databind.ObjectMapper 在 grails 中的共享实例,所以我认为最标准的方法是通过 bean DSL。
我在resources.groovy中尝试了类似(有很多变化,比如使用delegate关键字)

objectMapper(ObjectMapper) { bean ->
    bean.setVisibility(PropertyAccessor.ALL, Visibility.ANY)
    bean.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
}

但它不起作用,ObjectMapper 配置为默认方式,这与 grails 不能很好地工作。
我使用了一种解决方法来满足我的需要(在 BootStrap.groovy 中):
def init = { servletContext ->
    def bean = Holders.applicationContext.objectMapper
    bean.setVisibility(PropertyAccessor.ALL, Visibility.ANY)
    bean.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
}

任何人都可以指出我如何在它所属的 bean DSL 中做到这一点(恕我直言)?

最佳答案

bean 关闭参数的类型是 AbstractBeanDefinition 的某个子类型,它不引用实际的对象实例本身。

有多种方法可以设置可见性和配置 ObjectMapper 实例:

  • 创建一个子类并在构造函数中完成工作
  • factory (method) 中实例化 ObjectMapper
  • 写个 factory bean
  • ...

  • 您可以使用所有 Spring IoC 容器机制在 Grails 中进行 bean 实例化。

    并不是说我有那个确切的用例,但我倾向于创建一个自定义工厂 bean 并将 ObjectMapper 配置的逻辑放在那里。

    关于spring - 通过 Grail 的 bean DSL 配置 Jackson 的 ObjectMapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17695532/

    相关文章:

    spring - 找不到 maven 依赖项的 Postgresql 驱动程序

    jquery - 一对多的图像

    java - 当我尝试在 Spring Controller 的方法中将 json 字符串映射到 java 域类时出现 MethodArgumentConversionNotSupportedException

    Spring 4 - 拒绝所有端点的 "null"@RequestBody

    java - createCriteria 在没有 Activity 事务的情况下无效(Struts 2.3.15、Spring 3.2.4、Hibernate 4.2.5 Final)

    java - Spring Data/Hibernate native 查询返回 null,即使实际查询返回结果

    spring-tomcat-NoSuchMethodError setContentLengthLong

    grails - 如何将具有两个提交按钮的表单提交给Grails中的两个不同的 Controller 操作

    grails - 如何在grails中实现请求超时?

    java - java boolean 读取方法的命名策略