默认情况下,Spring将注册
BeanNameUrlHandlerMapping,和
DefaultAnnotationHandlerMapping,而无需任何显式配置。
如果您定义自己的
HandlerMappingbean,那么默认的bean将不会被注册,而您只会得到显式声明的bean。
到目前为止,一切都很好。
当您添加
<mvc:annotation-driven/>到混合中时,问题就来了。这 也
声明了自己的
DefaultAnnotationHandlerMapping,它取代了默认值。但是,如果您也声明自己的一个,那么最终您将声明两个。由于按照声明的顺序进行查询,因此通常意味着首先注册的
<mvc:annotation-driven/>人,而您自己的人将被忽略。
如果
DefaultAnnotationHandlerMappingregister by的
<mvc:annotation-driven/>行为类似于默认行为,那就更好了,即,如果显式声明的行为优先,但是那不是他们编写的方式。
我当前的偏好是根本不使用
<mvc:annotation-driven/>,这太混乱了,与其他配置选项混合使用时也太不可预测了。它实际上并没有做任何特别复杂的事情,显式添加它为您所做的工作并不困难或冗长,并且最终结果更易于理解。



