Java 无法理解@EnableWebMvc和<;注释驱动/>;

Java 无法理解@EnableWebMvc和<;注释驱动/>;,java,spring,spring-annotations,Java,Spring,Spring Annotations,我在为寻找基于注释的方法,然后找到了方法 所以我用了它,它也起作用了,但有一个陷阱 当我这样做的时候 @Configuration @EnableWebMvc public class WebApplicationConfig extends WebMvcConfigurerAdapter{ .... } servlet-context.xml中没有标记,因此它工作得非常好,url被截取,相应的前置后置逻辑工作起来,就像在“WebApplicationConfig”中实现的一样——我

我在为
寻找基于注释的方法,然后找到了方法

所以我用了它,它也起作用了,但有一个陷阱

当我这样做的时候

@Configuration
@EnableWebMvc
public class WebApplicationConfig extends WebMvcConfigurerAdapter{
     ....
}
servlet-context.xml中没有
标记,因此它工作得非常好,url被截取,相应的前置后置逻辑工作起来,就像在“WebApplicationConfig”中实现的一样——我的自定义截取程序

但如果我删除
@EnableWebMvc
并添加
,则从逻辑上讲,应用程序不起作用,这意味着没有url被拦截,就像“WebApplicationConfig”类根本不存在一样

如果同时保留
@EnableWebMvc
,则部署应用程序时会出现异常:

    ERROR: org.springframework.web.servlet.DispatcherServlet - Context initialization failed
    ..........
    Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.springframework.web.servlet.HandlerExceptionResolver 

org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.handlerExceptionResolver()] threw exception;

 nested exception is java.lang.ClassCastException:

 org.springframework.web.accept.ContentNegotiationManagerFactoryBean$$EnhancerByCGLIB$$56a95502 cannot be cast to org.springframework.web.accept.ContentNegotiationManager
那么,当我使用
而不是
@EnableWebMvc


另外,如果我使用
@EnableWebMvc
和no
,那么在声明类WebApplicationConfig的位置使用
@EnableWebMvc
是正确的位置?

@EnableWebMvc
对于激活
@controller
等都是一样的

您确定xml和配置文件都是在加载时加载的吗


可能在控制器基本包的xml文件地址中存在错误或类似情况。尝试将控制器类添加为bean,并查看它是否工作

,尽管
@EnableWebMvc
具有相同的目的,通过
@RequestMapping
启用对
@controller
的支持。无论是使用基于Java的配置还是xml,它们都不是互补的,混合使用它们是行不通的

WebMVCConfigureAdapter
或实际上的
WebMvcConfigurer
仅在使用
@EnableWebMvc
时设计和检测,而不是在使用


当尝试启用/使用它们时,您将遇到注册了重复的组件的问题(如
requestmappinghandleadapter
等)

@M.Deinum:哇,我的答案修改了。又是大学了:-)。谢谢是它造成了问题,对吗?好的,谢谢。删除
是否有任何影响。一般做法是什么。。在哪里可以阅读有关该主题的更多信息。如果启用
@EnableWebMvc
,则不会。IMHO后者比xml更容易配置,但这是个人偏好。