2014-11-14 80 views
1

我有一個自定義轉換服務工廠擴展FormattingConversionServiceFactoryBean,使其成爲控制器的通用轉換服務:下如何註解驅動的註冊多個轉換服務?

<bean class="com.app.me.ExtendedConversionFactoryBean" id="generalConversionService" /> 

<mvc:annotation-driven conversion-service="generalConversionService" /> 

一切都很好,直到我必須要註冊另一個轉換JSONP的服務bean以REST服務爲例,如this線程,在示例中應該有一個消息轉換服務,在mvc:annotation驅動下也是如此:

<mvc:annotation-driven> 
    <mvc:message-converters> 
     <bean class="com.iceycake.spring.jsonp.MappingJacksonJsonpHttpMessageConverter"> 
      <property name="supportedMediaTypes"> 
       <list> 
        <value>application/x-javascript</value> 
       </list> 
      </property> 
     </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

,可能的問題是,我可以設置在同一個MVC配置多個豆所以上述兩個轉換服務仍然可以生活在一起,或者我應該把消息轉換服務和一般轉換服務在服務列表豆?所以說,換句話說,我可以既豆註冊到同一MVC配置

<mvc:annotation-driven conversion-service="generalConversionService" /> 

<mvc:annotation-driven> 
    <mvc:message-converters> 
     <bean class="com.app.myapp.MessageConvertionService"> 
      <property name="supportedMediaTypes"> 
       <list> 
        <value>application/x-javascript</value> 
       </list> 
      </property> 
     </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

的要求是相當多的格式化程序和HttpMessageConverters在this後整合在一起

回答

1

不知道如果我理解正確,但如果你擔心重複mvc:annotation-driven

正確的配置應該是

<bean class="com.app.me.ExtendedConversionFactoryBean" id="generalConversionService" /> 

<mvc:annotation-driven conversion-service="generalConversionService"> 
    <mvc:message-converters register-defaults="true"> 
     <bean class="com.iceycake.spring.jsonp.MappingJacksonJsonpHttpMessageConverter"> 
      <property name="supportedMediaTypes"> 
       <list> 
        <value>application/x-javascript</value> 
       </list> 
      </property> 
     </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

套裝寄存器的默認如果不將不包括默認的消息轉換器。添加多個消息轉換器具豆內部消息轉換元件以及完全有效

+0

感謝。它看起來你的配置放在generalConversionService的頂部,這樣所有的消息轉換器必須與generalConversionService呢? – Dreamer 2014-11-14 17:36:44