整合Spring+SpringMVC+MyBatis(SSM)中所遇到的问题
最近公司的事情太多了,周一、二晚上跑通了MyBatis的简单例子,周末架起了Spring+SpringMVC+MyBatis的基本骨架,简单例子成功跑了起来。后续的一些深入理解,在这个的基础上才能进行吧。
其实跑一个简单的Sample问题是不大的,遇到的错误,需要仔细阅读错误提示信息,然后根据提示一步一步去解决;遇到一些莫名其妙的错误时,可以考虑一下是否为包的版本问题。
问题1:导入MyBatis-Spring
、MyBatis
以及Spring
版本所对应的关系
参考:http://www.mybatis.org/spring/
MyBatis-Spring | MyBatis | Spring |
---|---|---|
1.0.0 and 1.0.1 | 3.0.1 to 3.0.5 | 3.0.0 or higher |
1.0.2 | 3.0.6 | 3.0.0 or higher |
1.1.0 or higher | 3.1.0 or higher | 3.0.0 or higher |
1.3.0 or higher | 3.4.0 or higher | 3.0.0 or higher |
问题2:java.lang.IllegalAccessError: org.apache.commons.dbcp.DelegatingPreparedStatement.isClosed()Z
出现这个错误的时候,MyBatis
的版本是3.4.6,只需要将其版本降下去,此错误即可消失。这个错误确实有点无语。已换成了3.2.6。
问题3:运行项目MyEclipse
提示端口8080被占用
Mac下可使用lsof
命令,如下lsof
是一个显示系统中所有已打开文件的一个命令,即ls open file
问题4:MyEclipse
不进行代码提示
JetBrain系列IDE使用多了,在MyEclipse
上不能进行代码提示,有点难受。网上也是有解决方案的,如下:
进入Preference->Java->Editor->Content Assist->Auto Activation
,在Auto activation trigger for Java
中我们可以看到有一个’.’,所以这就是为什么我们输入.的时候,就会出来代码提示,而其它情况下就不会。所以只需要在其后面加上a-zA-Z0-9就好了。即:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
问题5:Cannot find class [org.springframework.http.converter.json.MappingJacksonHttpMessageConverter]
这是一个典型的因为包的版本不兼容而引起的错误。MappingJacksonHttpMessageConverter
这个类是很久以前的一个类了,目前最新的包内是不含有此类的,取而代之的是MappingJackson2HttpMessageConverter
参考:https://blog.csdn.net/vili_sky/article/details/73105550
问题6:Class not found: AnnotationMethodHandlerAdapter
同上。
Spring Framework 3.1 introduces a new set of support classes for processing requests with annotated controllers:
RequestMappingHandlerMapping
RequestMappingHandlerAdapter
ExceptionHandlerExceptionResolver
These classes are a replacement for the existing:
DefaultAnnotationHandlerMapping
AnnotationMethodHandlerAdapter
AnnotationMethodHandlerExceptionResolver
参考
整合Spring+SpringMVC+MyBatis(SSM)中所遇到的问题