SSM整合
SSM是Spring + SpringMVC + Mybatis。虽然SpringBoot很火,但这一套SSM依然有很多公司是在使用的。下面我们来看看如何完整的配置一套SSM框架。
整合目标:
- 数据库连接池以及事务管理都交给Spring容器来完成
- SqlSessionFactory对象应该放到Spring容器中作为单例对象管理
- Mapper动态代理对象交给Spring管理,我们从Spring容器中直接获得Mapper的代理对象
整合需要的jar包:
- Junit测试jar(4.12版本)
- Mybatis的jar(3.4.5)
- Spring相关jar(spring-context、spring-test、spring-jdbc、spring-tx、spring-aop、
aspectjweaver) - Mybatis/Spring整合包jar(mybatis-spring-xx.jar)
- Mysql数据库驱动jar
- Druid数据库连接池的jar
- 引入相关依赖
junit
junit
4.12
test
org.mybatis
mybatis
3.4.5
org.springframework
spring-context
5.1.12.RELEASE
org.springframework
spring-test
5.1.12.RELEASE
org.springframework
spring-jdbc
5.1.12.RELEASE
org.springframework
spring-tx
5.1.12.RELEASE
org.springframework
spring-aop
5.1.12.RELEASE
org.aspectj
aspectjweaver
1.8.9
org.mybatis
mybatis-spring
2.0.3
mysql
mysql-connector-java
8.0.13
com.alibaba
druid
1.1.21
- Spring配置文件-dao层相关
配置文件里还引入了jdbc的一个配置文件jdbc.properties
内容如下:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=0490218292
- Spring配置文件-service层相关
- 编写mapper接口
public interface UserMapper {
List queryUserList();
}
- 编写mapper的xml文件
- 到这里我们可以先测试一下之前的代码
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath*:applicationContext*.xml")
public class TestSSM {
@Autowired
private UserService userService;
@Test
public void test(){
List users = userService.queryUsers();
System.out.println(users);
}
}
没有问题了再继续整合SpringMVC
7. 引入SpringMVC 依赖
org.springframework
spring-webmvc
5.1.12.RELEASE
javax.servlet
jsp-api
2.0
provided
javax.servlet
javax.servlet-api
3.1.0
provided
jstl
jstl
1.2
taglibs
standard
1.1.2
com.fasterxml.jackson.core
jackson-core
2.9.0
com.fasterxml.jackson.core
jackson-databind
2.9.0
com.fasterxml.jackson.core
jackson-annotations
2.9.0
- 配置Spring MVC配置文件
- 编写contrller类
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/listUser")
@ResponseBody
public List listUser(){
return userService.queryUsers();
}
}
- 配置SpringMVC及Spring容器启动
Archetype Created Web Application '
contextConfigLocation
classpath:applicationContext*.xml
org.springframework.web.context.ContextLoaderListener
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
1
springmvc
/
- 启动项目
在项目的pom.xml里加入
war
再加入maven启动插件:
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
8080
/
需要注意:
Spring容器和SpringMVC容器是有层次的。
Spring容器里配置了Service和dao对象,SpringMVC容器里有controller对象,它可以引用Spring容器里的对象。但是Spring容器不能引用SpringMVC里的对象。
SpringMVC里是要配置controller的,如果Spring再配置的话,就是两个容器里都有controller对象,且两个对象是不同的。