2017-02-10 6 views
1

Я хочу использовать разный джексон ObjectMapper экземпляра (вместо того, которая используется на других отображенные URLs) на конечных точках, полученных из AbstractEndpoints.Использование пользовательской джексон картограф на пружинных загрузки конечных точках

Для выяснения вопроса, я не хочу, чтобы изменить или настроить картограф объект, который используется различными URLs от тех, полученных из AbstractEndpoints (как HealtEndpoint, MetricsEndpoint). Я хочу специально внедрить новый объект mapper в конечные точки управления.

+0

Определяет ли пользовательский '@ Bean' не для вас? См. Https://docs.spring.io/spring-boot/docs/current/reference/html/howto-spring-mvc.html#howto-customize-the-jackson-objectmapper. – aha

+0

Добро пожаловать в переполнение стека! Пожалуйста, примите [тур] (http://stackoverflow.com/tour), осмотритесь и прочитайте [справочный центр] (http://stackoverflow.com/help), в частности [Как я могу спросить хороший вопрос?] (http://stackoverflow.com/help/how-to-ask) и [Какие темы можно задать здесь?] (http://stackoverflow.com/help/on-topic). –

ответ

1

Если вы хотите полностью заменить ObjectMapper по умолчанию, либо определите @Bean этого типа и пометьте его как @Primary, либо, если вы предпочитаете подход на основе построителя, определите Jackson2ObjectMapperBuilder @Bean. Обратите внимание, что в любом случае это отключит всю автоматическую настройку «ObjectMapper».

Если вы предоставите любые @Beans типа MappingJackson2HttpMessageConverter, то они заменит значение по умолчанию в конфигурации MVC. Кроме того, компонент удобства предоставляется HttpMessageConverters (всегда доступен, если вы используете конфигурацию MVC по умолчанию), которая имеет некоторые полезные методы для доступа к конвертерам сообщений по умолчанию и пользователям.

Вы можете прочитать полную тему в документации: 73,3 Customize Джексона ObjectMapper

https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-customize-the-jackson-objectmapper

+0

К сожалению, эта проблема не решена. Поскольку я добавил дополнительную информацию в свой вопрос, мне нужен еще один компонент mapper для использования только для конкретных конечных точек управления, полученных из AbstractEndpoints. – cenkakin

0

Как Весеннее ботинке 1.5 вы можете настроить ObjectMapper в JMX конечных точек с помощью, но не так, как вы хотите. Как вы можете видеть, например, в constructor of EndpointMBean, он принимает аргумент ObjectMapper, но без qualifiers. Следовательно, он автоматически использует значение по умолчанию ObjectMapper, и вы ничего не можете с этим поделать, кроме изменения исходных источников или переноса собственных конечных точек и добавления необходимых квалификаторов.

Если вы все еще хотите использовать конечные точки по умолчанию, предоставляемые Spring ботинок, настроек по умолчанию ObjectMapper в соответствии с вашими потребностями, создать второй экземпляр, который соответствует исходной конфигурации и добавить отборочные использовать второй ObjectMapper в собственном коде. customization options for Jackson's ObjectMapper are described in the Spring Boot docs, а также обсуждается в How to customise the Jackson JSON mapper implicitly used by Spring Boot?.