我需要一个 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 实例:
您可以使用所有 Spring IoC 容器机制在 Grails 中进行 bean 实例化。
并不是说我有那个确切的用例,但我倾向于创建一个自定义工厂 bean 并将 ObjectMapper 配置的逻辑放在那里。
关于spring - 通过 Grail 的 bean DSL 配置 Jackson 的 ObjectMapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17695532/