Bre*_*yan 4 java spring spring-mvc
我想以某种方式注入HttpMessageConverterSpring-MVC中注册的所有实例.我可以成功注入所有已注册的内容.
private HttpMessageConverter[] converters;
@Autowired
public void setConverters(HttpMessageConverter[] converters) {
this.converters = converters;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果转换器在上下文中注册(即,如果在外部定义<annotation-driven>),则仅注入.
我确实想过我会尝试<beans:ref在里面使用<annotation-driven><message-converters>但是在spring-web 3.1中不支持它.
是否有一些我可以注入的类可能有一个我可以用来获得转换器的属性?理想情况下,我希望看到他们注册的过滤器链中的顺序.
您是对的,消息转换器直接在使用<mvc:annotation-driven/>xml标记注册的RequestMappingHandlerAdapter中实例化,而消息转换器子标签显式期望bean是内联定义的.
但是,解决方法是定义处理程序适配器并以这种方式注入转换器:
<bean name="handlerAdapter" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="webBindingInitializer">
<bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="conversionService" ref="conversionService"></property>
<property name="validator">
<bean class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
</bean>
</property>
</bean>
</property>
<property name="messageConverters">
<list>
<ref bean="byteArrayConverter"/>
<ref bean="jaxbConverter"/>
<ref bean="jsonConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"></bean>
<bean class="org.springframework.http.converter.ResourceHttpMessageConverter"></bean>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"></bean>
<bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"></bean>
</list>
</property>
</bean>
<bean name="byteArrayConverter" class="org.springframework.http.converter.ByteArrayHttpMessageConverter"></bean>
<bean name="jaxbConverter" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"></bean>
<bean name="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
<bean name="handlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="useSuffixPatternMatch" value="false"></property>
</bean>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4710 次 |
| 最近记录: |