如何摆脱<mvc:annotation-driven />?

到目前为止,<mvc:annotation-driven />给我带来了很多麻烦,所以我想摆脱它。尽管spring框架文档清楚地说明了应该做的事情,但实际上<mvc:annotation-driven /> 并没有摘要列表。

所以我一直坚持删除<mvc:annotation-driven />并得到错误

WARN osweb.servlet.PageNotFound-在名称为'workoutsensor'DispatcherServlet中找不到带有URI [/ webapp / trainees]的HTTP请求的映射

对于所有应该由控制器类解决的Url(在这种情况下:)./trainees。有什么建议可以让我了解更多信息<mvc:annotation-driven />吗?我非常想知道到底由代表什么标签<mvc:annotation-driven />

回答:

你可以用BeanPostProcessor来自定义定义的每个bean <mvc:annotation-driven />。现在,javadocs详细说明了标签注册的所有bean。

如果你真的想摆脱它,可以查看的源代码。

org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser

你会看到它正在定义哪个bean。我已经完成了这个“练习”(不是针对所有的人,而是针对我需要的人),所以这里是:

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

<property name="webBindingInitializer">

<bean class="com.yourpackage.web.util.CommonWebBindingInitializer" />

</property>

<property name="messageConverters">

<list>

<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />

<bean class="org.springframework.http.converter.ResourceHttpMessageConverter" />

<bean class="org.springframework.http.converter.StringHttpMessageConverter" />

<bean class="org.springframework.http.converter.feed.AtomFeedHttpMessageConverter" />

<bean class="org.springframework.http.converter.feed.RssChannelHttpMessageConverter" />

<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />

<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />

<bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" />

<!-- bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" /-->

</list>

</property>

</bean>

<bean id="handlerMapping"

class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">

现在,在上方你会看到CommonWebBindingInitializer。你必须创建此类,才能使用转换和验证:

public class CommonWebBindingInitializer implements WebBindingInitializer {

@Autowired

private Validator validator;

@Autowired

private ConversionService conversionService;

@Override

public void initBinder(WebDataBinder binder, WebRequest request) {

binder.setValidator(validator);

binder.setConversionService(conversionService);

}

}

到目前为止,这对我来说还不错。

以上是 如何摆脱&lt;mvc:annotation-driven /&gt;? 的全部内容, 来源链接: utcz.com/qa/406753.html

回到顶部