2015-12-12 3 views
1

По некоторым причинам я решил изменить на другой message converter, мой код нижеКак узнать, какой конвертер сообщений используется весной?

@Bean 
public HttpMessageConverters customConverters() { 
    HttpMessageConverter<?> additional = new FastJsonHttpMessageConverter(); 
    return new HttpMessageConverters(additional); 
} 

Теперь я хотел бы знать, как проверить, является ли этот обычай преобразователь действует? Я пытался получить доступ к /beans но только получил это

{ 
    bean: "customConverters", 
    scope: "singleton", 
    type: "org.springframework.boot.autoconfigure.web.HttpMessageConverters", 
    resource: "com.foo.BarApplication", 
    dependencies: [ ] 
} 

Так же существует какой-то способ, чтобы знать, какое сообщение конвертер используется пружинной загрузки?

ответ

1

Только вложенные зависимости показаны в массиве dependencies. Если вы делаете что-то вроде

@Bean 
public FastJsonHttpMessageConverter fastJsonHttpMessageConverter() { 
    return new FastJsonHttpMessageConverter(); 
} 

@Bean 
@Autowired 
public HttpMessageConverters convertersToBeUsed(FastJsonHttpMessageConverter converter) { 
    return new HttpMessageConverters(converter); 
} 

вы увидите FastJsonHttpMessageConverter в списке.

Если вы хотите увидеть все зарегистрированные конверторы, найдите в списке бобов HttpMessageConvertersAutoConfiguration. Он должен выглядеть примерно так:

{ 
    bean: "org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration", 
    scope: "singleton", 
    type: "org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration$$EnhancerBySpringCGLIB$$9e15b021", 
    resource: "null", 
    dependencies: [ 
     "fastJsonHttpMessageConverter", 
     "stringHttpMessageConverter" 
    ] 
} 
+0

Спасибо! но когда искать 'HttpMessageConvertersAutoConfiguration' я только получил это' зависимости: [ «stringHttpMessageConverter», «mappingJackson2HttpMessageConverter» ] ' – zhuguowei

+0

Если добавить два определения боба из ответа и библиотека fastjson находится на пути к классам вы увидите 'fastJsonHttpMessageConverter' в списке - вот как работают конвертеры в весенней загрузке :) – mzc

+0

Спасибо! Так как вы сказали, я позволяю 'FastJsonHttpMessageConverter' быть пружинный управляемый компонент, и на этот раз, когда искать' HttpMessageConvertersAutoConfiguration', получил 'зависимости: [ «fastJsonHttpMessageConverter», «stringHttpMessageConverter», «mappingJackson2HttpMessageConverter» ]', так Я знаю, что мой пользовательский конвертер является первым конвертером. – zhuguowei

2

Потому что я не очень уверен, работает ли мой пользовательский конвертер, поэтому мне нужно отслеживать исходный код. Я клонировал Spring Framework, затем привязал его в затмении, затем отлаживал шаг за шагом и нашел что-то. В AbstractMessageConverterMethodProcessor.writeWithMessageConverters

for (HttpMessageConverter<?> messageConverter : this.messageConverters) 

когда часы this.messageConverters получил ниже выхода

[org.springframework[email protected]1eb0d2e8, c[email protected]2026476b, o[email protected]3287cbc7, [email protected]19dd3, [email protected]1afe28f1, or[email protected]87129da, org.springframework[email protected]4a412e0, org.springfr[email protected]a8528a2, org.springfr[email protected]61d720a3] 

и на самом деле он использовал c[email protected]2026476b

+0

Спасибо. Это тот ответ, который я искал. –

Смежные вопросы