Spring Boot 如何在这里配置我的 Jackson ObjectMapper?

微博

我试图了解 Spring/Spring Boot 如何为我负责维护的应用程序管理 DI。在该应用程序中,我看到一个MyAppInjectorGroovy 文件,如下所示:

@Configuration
class MyAppInjector {
    @Autowired
    void configureJackson(ObjectMapper objectMapper) {
        SimpleModule jacksonModule = new SimpleModule()
                .addDeserializer(AccountDeserializer, new AccountDeserializer())
                .addDeserializer(PhoneNumberDeserializer, new PhoneNumberDeserializer())
                .addDeserializer(AddressDeserializer, new AddressDeserializer())
                .addDeserializer(ContactDeserializer, new ContactDeserializer())
                .addDeserializer(CustomerDeserializer, new CustomerDeserializer())
                .addDeserializer(DeploymentInfoDeserializer, new DeploymentInfoDeserializer())
                .addDeserializer(ServiceAgreementDeserializer, new ServiceAgreementDeserializer())

        objectMapper.registerModule(jacksonModule)
    }
}

但是我没有看到configureJackson(...)从我的应用程序源代码中的任何地方调用。假设此方法正在配置 Jackson ObjectMapper,Spring 使用它来将 JSON 序列化为 POJO。

但是,Spring 怎么知道在ObjectMapper这里配置呢?它是否寻找任何注释的东西@Configuration,然后看到它在ObjectMapper某处注册了一个 Jackson ,并将它传递给这个configureJackson(...)方法?对我来说看起来像魔术......

对于用 注释的类中任何方法都是如此@Configuration吗?意思是我可以创建一个方法,如:

@Configuration
class MyAppInjector {
    @Autowired
    Fizz fizz(Buzz buzz) {
      new Fizz(buzz)
    }

    @Autowired
    void configureJackson(ObjectMapper objectMapper) {
        SimpleModule jacksonModule = new SimpleModule()
                .addDeserializer(AccountDeserializer, new AccountDeserializer())
                .addDeserializer(PhoneNumberDeserializer, new PhoneNumberDeserializer())
                .addDeserializer(AddressDeserializer, new AddressDeserializer())
                .addDeserializer(ContactDeserializer, new ContactDeserializer())
                .addDeserializer(CustomerDeserializer, new CustomerDeserializer())
                .addDeserializer(DeploymentInfoDeserializer, new DeploymentInfoDeserializer())
                .addDeserializer(ServiceAgreementDeserializer, new ServiceAgreementDeserializer())

        objectMapper.registerModule(jacksonModule)
    }
}

...并期望 Spring 智能地寻找一个Buzz实例以Fizz在构造时传入

阿米特·K·比斯特

SpringBoot 自己实例化 ObjectMapper,因为 Spring 使用它来将 Java 对象转换为 JSON,反之亦然。因此,如果它在类路径中找到 Spring boot,它将加载 objectMapper。现在,在您的 configureJackson 方法中,您引用了 ObjectMapper 和 @Autowired 注释,因此 Spring 将为该方法提供 ObjectMapper 的实例。

@Autowired注释做,你指的是魔术。@Autowired

Fizz fizz(Buzz buzz) {
  new Fizz(buzz)
} 

在这个例子中,Apring 将在 fizz 方法中注入 Buzz 实例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Spring Boot中为Camel配置Jackson ObjectMapper

来自分类Dev

使用 Jackson Framework 进行 @RequestBody 注释的 Spring Boot ObjectMapper

来自分类Dev

Spring Boot 测试和 Jackson - 在没有开销配置的测试中从上下文设置 (application.yml) 获取 ObjectMapper 的实例

来自分类Dev

Spring Boot忽略ObjectMapper模块

来自分类Dev

如何使用Jackson ObjectMapper检测尾随垃圾

来自分类Dev

如何在Spring Boot 1.4中自定义Jackson

来自分类Dev

我如何在REST安全中访问底层的Jackson ObjectMapper?

来自分类Dev

spring boot、jackson 和 localdate

来自分类Dev

配置Jackson以省略Spring Boot中的延迟加载属性

来自分类Dev

Spring Boot Jackson的自动配置链接错误Wildfly

来自分类Dev

如何访问全局spring ObjectMapper?

来自分类Dev

如何在Spring MVC(非Spring Boot)应用程序中自定义Jackson

来自分类Dev

Jackson ObjectMapper 不遵守配置的日期时间格式

来自分类Dev

如何使用Jackson的objectMapper反序列化接口字段?

来自分类Dev

如何使用Jackson ObjectMapper解析JSON对Java对象的响应

来自分类Dev

如何使用Jackson的ObjectMapper.readerForUpdating忽略某些字段

来自分类Dev

如何使用Spring Boot为嵌套实体配置Jackson解串器

来自分类Dev

Spring Boot Jackson映射不起作用

来自分类Dev

spring-boot 使用什么版本的 Jackson?

来自分类Dev

Spring定制版Jersey 2中的自定义Jackson ObjectMapper

来自分类Dev

Spring与Jackson ObjectMapper和Java 8 Time的集成(JSR-310)

来自分类Dev

Spring MVC:使用 Jackson objectMapper 将查询参数反序列化为 POJO

来自分类Dev

Jackson ObjectMapper大写/小写问题

来自分类Dev

Jackson JSON ObjectMapper.readvalue

来自分类Dev

如何确保Spring Boot额外的Jackson模块具有相同版本?

来自分类Dev

Spring Boot(Jackson):如何避免将类名序列化为JSON

来自分类Dev

Spring Boot(Jackson):如何避免将类名序列化为JSON

来自分类Dev

如何配置Jackson ObjectMapper将Foo类型的所有字段反序列化为SubclassOfFoo的实例?

来自分类Dev

如何在Jackson 2.7+上为ObjectMapper设置命名策略?

Related 相关文章

  1. 1

    如何在Spring Boot中为Camel配置Jackson ObjectMapper

  2. 2

    使用 Jackson Framework 进行 @RequestBody 注释的 Spring Boot ObjectMapper

  3. 3

    Spring Boot 测试和 Jackson - 在没有开销配置的测试中从上下文设置 (application.yml) 获取 ObjectMapper 的实例

  4. 4

    Spring Boot忽略ObjectMapper模块

  5. 5

    如何使用Jackson ObjectMapper检测尾随垃圾

  6. 6

    如何在Spring Boot 1.4中自定义Jackson

  7. 7

    我如何在REST安全中访问底层的Jackson ObjectMapper?

  8. 8

    spring boot、jackson 和 localdate

  9. 9

    配置Jackson以省略Spring Boot中的延迟加载属性

  10. 10

    Spring Boot Jackson的自动配置链接错误Wildfly

  11. 11

    如何访问全局spring ObjectMapper?

  12. 12

    如何在Spring MVC(非Spring Boot)应用程序中自定义Jackson

  13. 13

    Jackson ObjectMapper 不遵守配置的日期时间格式

  14. 14

    如何使用Jackson的objectMapper反序列化接口字段?

  15. 15

    如何使用Jackson ObjectMapper解析JSON对Java对象的响应

  16. 16

    如何使用Jackson的ObjectMapper.readerForUpdating忽略某些字段

  17. 17

    如何使用Spring Boot为嵌套实体配置Jackson解串器

  18. 18

    Spring Boot Jackson映射不起作用

  19. 19

    spring-boot 使用什么版本的 Jackson?

  20. 20

    Spring定制版Jersey 2中的自定义Jackson ObjectMapper

  21. 21

    Spring与Jackson ObjectMapper和Java 8 Time的集成(JSR-310)

  22. 22

    Spring MVC:使用 Jackson objectMapper 将查询参数反序列化为 POJO

  23. 23

    Jackson ObjectMapper大写/小写问题

  24. 24

    Jackson JSON ObjectMapper.readvalue

  25. 25

    如何确保Spring Boot额外的Jackson模块具有相同版本?

  26. 26

    Spring Boot(Jackson):如何避免将类名序列化为JSON

  27. 27

    Spring Boot(Jackson):如何避免将类名序列化为JSON

  28. 28

    如何配置Jackson ObjectMapper将Foo类型的所有字段反序列化为SubclassOfFoo的实例?

  29. 29

    如何在Jackson 2.7+上为ObjectMapper设置命名策略?

热门标签

归档