Caused by: java.lang.ClassNotFoundException: org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter


嚴重: StandardWrapper.Throwable
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping': Invocation of init method failed; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter] for bean with name 'org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter#0' defined in class path resource [springmvc-context.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
Related cause: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter] for bean with name 'org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter#0' defined in class path resource [springmvc-context.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1745)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:576)

 

 

原因是Spring 3.x 和4.X處理JSON的一個類不一樣,而這個東西又配置在xml文件中,所以編譯時又無法發現

spring3.x是org.springframework.http.converter.json.MappingJacksonHttpMessageConverter

spring4.x是org.springframework.http.converter.json.MappingJackson2HttpMessageConverter

 

https://www.iteye.com/topic/1136145

1. <context:annotation-config/>隱式的向Spring 容器注冊
AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor,
PersistenceAnnotationBeanPostProcessor以及RequiredAnnotationBeanPostProcessor這4 個BeanPostProcessor,解決了@Controller標識的類的bean的注入和使用。
2. <mvc:annotation-driven/>隱式注冊了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter兩個bean,配置一些messageconverter,解決了@Controller注解的使用前提配置。
第一條中的配置一般在配置包掃描路徑掃描之后將其移除,為什么呢:
<context:component-scan base-package="***.***"/> 該配置項其實也包含了自動注入上述"1"中四個bean processor的功能,因此當使用 <context:component-scan/> 后,就可以將 <context:annotation-config/>移除了。
你最后的疑問:不配置<mvc:annotation-driven/>,基本的訪問應該是沒問題,比如servlet mapping的配置是"*.do", ".do"這種請求可以被正確捕捉和處理,但是如果添加靜態資源訪問,你可能要將攔截改為"/",此時你再次訪問就會發現已經不能被正常攔截了,除非你加上<mvc:annotation-driven/>。<mvc:annotation- driven/>在初始化的時候會自動創建兩個對 象,org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter 和 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM