1.邂逅 SSM前言记得大二上学期老师第一次讲 SSM 整合的时候,本人居然糊里糊涂睡过去了。平时上课不好好听讲,起初据说期末要交大作业了,只能被迫去网上自学。
不对。。。少打个S,不过这真的是我第一次搜 SSM 的材料,过后室友还说我变态。
不过从那天起我带着难堪的表情和搞定期末大作业的信心把 SSM 框架的整合认真钻研了一遍。SSM 框架SSM 框架 是 Spring、SpringMVC、MyBatis 的缩写,这三个框架整合起来实用于搭建各种大型的企业级利用零碎。这个是继 SSH 框架之后,利用比拟宽泛的 Java EE 企业级框架。不过 2022 年了,我感觉这句话应该改改了,因为目前支流的企业级开发都是基于 SpringBoot 框架。而 SSM 框架的整合目前更适宜程序小白去做学习钻研以及计算机专业大四生去做毕业设计。2.如何整合 SSM1.框架之间的关系咱们在整合 SSM 之前,先看一下这些框架之间的关系。Spring 和 SpringMVCSpring 和 SpringMVC 都是用来治理对象的容器。SpringMVC 次要用来治理 Controller ,Spring 次要用来治理 Service 和 Dao 以及其余对象。所以咱们在 SpringMVC 的配置文件里配置的注解扫描门路就是 Controller的门路,而 Spring 的配置文件配置的注解扫描门路会排除 Controller。Spring 和 SpringMVC 是父子容器的关系。Spring 容器是父容器,SpringMVC 是子容器。子容器能够拜访父容器的对象,然而在父容器里不能拜访子容器的对象。也就是说在 Controller 里能够拜访 Service 对象,然而在 service 里不能够拜访 Controller 对象。SpringMVC 是 Spring 的子项目,属于 Spring 家族的一部分。所以在潜意识里,你能够认为他俩简直是黏在一起的。所以他俩根本是无缝整合的,说白了就是他俩不须要整合。Spring 和 MybatisMyBatis 是一个基于 java 的长久层框架,它外部封装了 jdbc。它和 Spring 看起来如同没啥关系。然而 Mybatis 开发过程中有很多痛点:1.配置繁琐,咱们须要配置实体类的别名、映射文件所在位置、数据源等。2.创立 Mapper 麻烦。3.Mybatis 接口调用比拟繁琐:// 1.读取配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
// 2.创立 SqlSessionFactory 工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
// 3.获取 SqlSession 对象
SqlSession session = factory.openSession();
// 4.应用 SqlSession 创立 Dao 接口的代理对象
UserDao userDao = session.getMapper(UserDao.class);
// 5.执行接口的办法
List<User> userList = userDao.getAll();
复制代码然而 Spring 能够帮忙 Mybatis 解决这些痛点:1.DataSource 能够作为 Spring 的一个 bean<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
复制代码2.Spring 也能够治理 SqlSessionFactory 对象、设置实体类别名、治理 mapper 文件。<!-- 治理mybatis操作数据库的会话对象SqlSession -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 设置数据源 --><property name="dataSource" ref="dataSource"></property><!-- 设置类型别名 --><property name="typeAliasesPackage" value="com.zhifou.model"></property><!-- 设置映射文件的门路 --><property name="mapperLocations" value="classpath:/mapper/*.xml"></property>
</bean>
复制代码3.利用 Spring 的动静代理技术主动创立 Dao 接口的代理对象:<!-- 在所设置的包下,将所有的接口生成动静代理实现类,并由spring容器治理 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.zhifou.dao"></property>
</bean>
复制代码2. 整合思路外表看是 SSM 整合,实际上是 Spring 和 Mybatis 的整合。因为 Spring 和 SpringMVC 无缝整合,所以 SpringMVC 的配置根本不必动。然而咱们须要留神一点:Spring 是用来治理对象的工厂,咱们须要保障这个工厂只被创立一次。所以须要在 web.xml 配置 Spring 的监听器。当 Tomcat 一启动,主动初始化 Spring 的 IOC 容器,创立 Spring 的工厂。3. 整合流程咱们先配置 SpringMVC:1.创立 SpringMVC 的配置文件,配置注解扫描 controller、拜访动态资源、视图解析器。2.web.xml 配置地方调度器、字符过滤器再整合 Spring 和 Mybatis3.创立 spring 的配置文件,配置注解扫描排除 controller。4.配置数据源5.配置 SqlSessionFactoryBean6.配置管理主动生成的 Dao 层的代理对象7.配置事务管理最初咱们再配置 Spring 的监听器,启动我的项目主动初始化 Spring 容器。8.在 web.xml 配置 Spring 的监听器。3.基于配置文件形式整合 SSM这里我先讲一下基于配置文件的形式整合 SSM。1.创立基于 Maven 的 web 我的项目
2.引入依赖<dependencies>
<!-- 蕴含 beans、core、expression、aop 等依赖-->
<dependency>
<groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.16.RELEASE</version>
</dependency>
<!-- 主动加载 Spring 工厂、反对文件上传等-->
<dependency>
<groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.2.16.RELEASE</version>
</dependency>
<!-- 封装 jdbc 、蕴含 spring-tx 事务管理依赖-->
<dependency>
<groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.16.RELEASE</version>
</dependency>
<!-- 动静代理 -->
<dependency>
<groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.9.5</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.5</version>
</dependency>
<!-- springmvc 外围依赖 -->
<dependency>
<groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.8.RELEASE</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version>
</dependency>
<!-- mybatis-spring 整合依赖 -->
<dependency>
<groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.5</version>
</dependency>
<!-- mysql 驱动 -->
<dependency>
<groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope>
</dependency>
<!-- json 格局转换-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.13.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.2</version>
</dependency>
</dependencies>
复制代码这里解说一下局部引入的依赖:(1)spring-context 蕴含 Spring 的所有外围依赖,所以只须要引入这一个即可。
(2)spring-jdbc 依赖蕴含 Spring 对 jdbc 的封装、事务的解决。
(3)mybatis-spring 是 mybatis、spring 整合须要的依赖 。(4)jackson 相干的依赖是用来解决 json 格局的数据。3.创立 SpringMVC 的配置文件,配置注解扫描 controller、拜访动态资源、视图解析器。
4.web.xml 配置地方调度器、字符过滤器。
5.创立 spring 的配置文件,配置注解扫描排除 controller。
6.配置数据源这里咱们通过引入内部文件的形式配置数据源。
7.配置 SqlSessionFactoryBean
8.配置管理主动生成的 Dao 层的代理对象
9.配置事务管理
10.在 web.xml 配置 Spring 的监听器。
11.配置 Tomcat 并测试
胜利!撒花!12.残缺代码链接: https://pan.baidu.com/s/1lT9G...
提取码: ocj9
复制代码4.纯注解形式整合 SSM这里咱们讲一下基于纯注解的形式整合 SSM,创立我的项目和引入依赖的过程这里不再过多解说, Maven 依赖和下面一样。1.创立 SpringMVC 的配置类,配置注解扫描 controller、地方调度器、拜访动态资源、视图解析器。
@EnableWebMvc:开启 MVC 的配置。2.创立 DataSource 的配置类。
@PropertySource:示意引入内部文件资源。@Value:示意为变量赋值。3.创立 Spring 的配置类。导入 DataSource 的配置类。配置sqlSessionFactoryBean、DAO 的代理对象、事务管理
@Import:导入整合其余配置类@EnableTransactionManagement:开启事务管理。4.创立代替 web.xml 的配置类
这个配置类就相当于 web.xml 的性能,当 Tomcat 启动的时候主动加载 Spring 和 SpringMVC 的配置类,初始化容器。5.测试
胜利!撒花!6.残缺代码链接: https://pan.baidu.com/s/1LeRG...
提取码: tc2k