Spring Ioc Beans 管理

Spring Ioc Beans management

我有一个关于 spring IoC 管理的问题。我在以下位置创建了 Bean:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {....}

    @Bean
    public XmlMapper xmlMapper() {
        return new XmlMapper();
    }
}

这些 bean 按预期工作正常。但是 Default ObjectMapper 被覆盖并且
@RestController 尝试解析请求并期望有效负载为 XML.

谁能解释为什么会这样?

XmlMapperObjectMapper 的子 class 所以如果你声明一个这种类型的 bean,Spring 将使用那个并在需要的地方注入它。

如果您还想在其他地方使用基本 ObjectMapper。您可以声明另一个 bean ObjectMapper。您可能必须将其指定为主。

@SpringBootApplication
public class Application {
    public static void main(String[] args) {....}

    @Bean
    public XmlMapper xmlMapper() {
        return new XmlMapper();
    }

    @Bean
    @Primary //Not sure if needed
    public ObjectMapper objectMapper() {
        return new ObjectMapper();
    }
}