2014-11-14 74 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