SSM整合配置是Java Web开发中经典的框架组合方案,正确配置需要依次完成Spring、SpringMVC和MyBatis的集成,并注意各组件版本兼容性。
SSM整合配置步骤详解
环境准备与工具选择
进行SSM整合配置前,需要准备好开发环境,JDK推荐使用1.8或11,Maven 3.6+,IDE选择IntelliJ IDEA或Eclipse,数据库建议使用MySQL 5.7+,这些工具版本直接影响整合过程的稳定性,相当一部分开发者因为版本问题导致配置失败。
创建Maven项目并引入依赖
在IDEA中新建一个Maven项目,选择war包类型,在pom.xml中添加核心依赖:
- Spring Framework:spring-context、spring-webmvc、spring-jdbc
- MyBatis核心:mybatis、mybatis-spring
- 数据库驱动:mysql-connector-java
- 连接池:druid或c3p0
- Servlet API:javax.servlet-api、jstl
注意依赖版本要匹配,例如Spring 5.x搭配MyBatis 3.5.x,MyBatis-Spring 2.0.x,版本冲突是ssm整合配置报错的常见原因之一,建议使用Spring官方管理的BOM或统一版本号。
配置web.xml
web.xml是整个应用的入口,需要配置:
- Spring的ContextLoaderListener,用于加载Spring容器。
- SpringMVC的DispatcherServlet,配置servlet-mapping为“/”,拦截所有请求。
- 字符编码过滤器,防止中文乱码。
具体配置时注意初始化参数contextConfigLocation指向Spring配置文件,同时配置
配置Spring核心配置文件
通常命名为applicationContext.xml,放置于src/main/resources,内容包括:
- 开启注解扫描,扫描Service、DAO等组件,使用
- 配置数据源,使用DruidDataSource,设置连接参数,如driverClassName、url、username、password。
- 配置SqlSessionFactoryBean,指定MyBatis配置文件位置和mapperLocations,注入数据源。
- 配置MapperScannerConfigurer,自动扫描Mapper接口生成代理对象,设置basePackage为Mapper接口所在包。
配置SpringMVC配置文件

通常命名为springmvc.xml,配置:
- 开启注解驱动
- 配置视图解析器InternalResourceViewResolver,设置前缀为/WEB-INF/views/,后缀为.jsp
- 扫描Controller所在的包,使用
注意要将SpringMVC的配置文件加载路径在web.xml中指定给DispatcherServlet的init-param。
配置MyBatis映射文件
在resources下创建mapper目录,编写对应的XML映射文件,定义SQL语句和结果映射,注意namespace与Mapper接口全限定名一致,SQL语句id与接口方法名一致,常用MyBatis标签包括
整合测试与验证
编写一个简单的Controller,注入Service,调用Mapper查询数据库,启动Tomcat,访问测试路径,查看数据是否正常返回,如果出现404或500,根据日志排查。ssm整合配置详解中,这一步是检验配置正确性的关键,建议先配置一个简单的查询功能,确认整个链条打通后再添加更多功能。
SSM整合配置与Spring Boot的适用场景对比
配置复杂度对比
传统SSM整合配置需要手动编写多个XML文件,包括web.xml、applicationContext.xml、springmvc.xml、mybatis-config.xml,还需要处理依赖版本兼容,而Spring Boot通过自动配置大幅简化了过程,大部分配置项被自动装配,仅需少量配置即可运行,在ssm整合配置与springboot对比中,SSM的配置过程更显繁琐,但换来的是对每个框架的完全控制权。
项目启动速度对比
SSM整合配置的项目在Tomcat中启动,需要经历容器初始化、加载配置、建立数据库连接等步骤,启动时间较长,Spring Boot内嵌容器,启动速度更快,但资源消耗略高,对于本地开发环境,Spring Boot的快速启动优势明显,而在生产环境中,两者差异不大。
适用场景选择
- SSM整合配置更适合已经存在多年、需要维护的旧项目,或者对框架控制要求极高的企业级项目,在这些场景下,开发者需要细粒度调整每个框架的行为,SSM的显式配置更易于追踪。
-

Spring Boot更适合新项目开发、微服务架构、快速迭代的场景,它降低了入门门槛,约定大于配置,开发效率更高。
行业共识认为,中小型项目选择Spring Boot更加高效,而大型遗留系统或需要高度定制化的项目,SSM仍是可靠选择。ssm整合配置与springboot对比时,核心差异在于配置方式与开发效率,实际生产环境中两者均能稳定运行。
性能与维护成本
在性能上,两者没有本质区别,因为底层都是Spring和MyBatis,但SSM整合配置由于手动配置较多,容易出错,维护成本相对较高,Spring Boot的自动配置和健康检查等功能,使得运维更加便捷,如果团队中有多位开发者,SSM的配置文档需要持续维护,而Spring Boot的标准配置更易统一。
SSM整合配置报错常见原因及解决方法
依赖版本不兼容
这是最常见的ssm整合配置报错原因,例如Spring 4.x与MyBatis 3.5.x的某些组合会出现冲突,或者MyBatis-Spring版本与MyBatis版本不匹配,解决方法是参考官方文档确定的版本对应关系,或使用Maven的dependencyManagement统一管理所有Spring及其相关组件的版本。
配置文件扫描路径错误
Spring的注解扫描没有包含Service层,或者MapperScannerConfigurer的basePackage未设置,导致Bean找不到,检查配置中的扫描路径是否准确对应了包名,常见错误是只扫描了Controller,却遗漏了Service和DAO,导致依赖注入失败。
MyBatis映射文件namespace错误
映射文件中的namespace必须与Mapper接口的全限定类名一致,否则运行时抛出BindingException,其次是SQL语句的id与接口方法名不匹配,如果使用MyBatis Generator自动生成代码,这个问题较少出现,但手动编写时需格外注意。
数据库连接配置错误
数据源配置中的url、username、password错误,或者驱动类未加载,常见错误是使用MySQL 8.0时驱动类名变为com.mysql.cj.jdbc.Driver,且需要设置时区,数据库连接池的配置参数如initialSize、maxActive等设置不当也会导致连接失败。
解决思路
遇到报错时,首先查看控制台异常栈,定位到具体框架层,然后逐项核对配置文件,使用日志框架输出SQL执行情况。

ssm整合配置环境搭建过程中,建议每完成一个配置就做一次小测试,避免问题堆积,多数情况下,错误可以从异常栈的顶层找到根本原因,比如ClassNotFoundException、NoSuchBeanDefinitionException、BindingException等。
SSM整合配置是Java后端开发的重要基础,掌握它有助于理解Spring生态的底层原理,虽然Spring Boot日益流行,但在许多企业项目中,SSM仍是主流选择,通过本文的步骤详解和报错分析,你可以快速完成整合配置,并应对常见问题,关键点在于版本匹配、路径正确和配置顺序,把握好这些,整合过程会顺畅很多。
SSM整合配置常见问题解答
SSM整合配置中Spring和SpringMVC的配置如何区分?
Spring容器负责管理Service、DAO等业务层组件,SpringMVC容器负责管理Controller等Web层组件,父容器(Spring)不能访问子容器(SpringMVC)的Bean,但子容器可以访问父容器的Bean,配置时,applicationContext.xml扫描Service和DAO,springmvc.xml扫描Controller,并设置父子容器关系,在web.xml中,ContextLoaderListener加载的配置文件生成父容器,DispatcherServlet加载的配置文件生成子容器。
MyBatis映射文件找不到导致报错怎么处理?
检查MapperScannerConfigurer的basePackage是否指向了正确的Mapper接口包路径,同时确保映射文件放置在与接口相同的目录下,或者在applicationContext.xml中通过mapperLocations属性指定映射文件位置,如classpath:mapper/.xml,如果使用Maven过滤资源,需确认resources目录下的映射文件在打包时被正确复制到classpath中。
SSM整合配置时Tomcat启动报错ClassNotFoundException
确认依赖的jar包是否已正确部署到WEB-INF/lib目录,如果使用Maven,检查pom.xml中的scope是否设置为provided(如servlet-api),但运行时需要provided,所以编译时可能报错,但运行时不会,如果真的是缺少jar,重新执行mvn clean package,然后查看war包内容,检查是否在pom.xml中遗漏了必需依赖,如spring-webmvc会间接依赖其他spring核心包,但最好显式声明所有直接使用到的依赖。
