Spring+MVC+Mybatis整合
本文是对慕课网上"搞定SSM开发"路径的系列课程的总结,详细的项目文档和课程总结放在github上了.点击查看
什么是秒杀业务
网站售卖某产品时,规定在某个日期开始售卖限量的产品,最典型的比如小米的开售;这种情况下,可能有很多用户对同一产品在同一时间请求购买,并发数特别高,所以对数据库和网络的设计要求比较高.
秒杀系统的业务分析
秒杀系统最关键的部分是对库存的访问与修改,可能存在同一时间对数据库里的同一字段大量的访问,如何保证查询的时间比较短,让尽可能多的用户尽快访问,是此类业务的关键.
分层
- Dao层: 数据层,主要是对数据的访问;
- Service层: 业务层,封装主要的业务逻辑
- exception层: 定义所有exception
- Web层: 展示给用用户,即前台页面
注意要多写注释
Dao层:
- 使用sql创建相关的数据库和表;
- 创建实体,一般对应数据库的一张表;
- 创建Dao层接口,定义预先定义的方法;
- 使用Mybatis实现Dao接口,一般来说使用Mapper中的namespace对应到对应接口,Mybatis会自动创建其实现类;
[mapper namespace]
[resultMap]
[seelct id]
具体可参考系列文档中关于mybatis的总结 - 写好Mybatis的xml配置文件,启用Mybatis的功能:
mybatis-config.xml的基本配置:
<configuration>
<!-- 配置全局属性 -->
<settings>
<!-- 使用jdbc的getGeneratedKeys获取数据库自增主键 -->
<setting name="useGeneratedKeys" value="true"/>
<!-- 使用列别名替换列名 -->
<setting name="useColumnLabel" value="true"/>
<!-- 开启驼峰命名转换 下划线命名到驼峰命名的转换-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
(以下序号应当从6开始)
Spring整合Mybatis:spring-dao.xml
- 引入property文件;
- 创建数据源-一般是c3p0
- SqlSessionFactory的配置(属性:连接池,配置文件-全局文件指定*)
- 配置扫描接口,指定扫描哪些包下的Dao接口
单元测试
Service层:
1.Service层关注业务怎么实现,一开始级应该设计好
从"使用者"的角度设计接口:
- 方法定义粒度
- 参数要好处理
- 返回类型
- 写好注释
2.业务代码,爱咋写咋写,按层次即可
3.通过Spring IOC管理所有的service层代码
使用注解的话,@Service,@Bean,@Autowired等注解实现bean的托管和依赖注入
以下为Spring注解开启的示例文件.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/shcema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 扫描service报下所有使用注解的类型 -->
<context:component-scan base-package="com.ct.maven.SecKill.service"></context:component-scan>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
4.使用集成测试
Web层:
[restful] [bootStrap+jquery] [SpringMVC]
1:restful接口设计,实际上是uri的定义规范,资源的状态或者资源状态的转移;Spring注解很方便地和resultful适配
2:编写controller,详情可参见SpringMVC的总结.
3:配置mvc
- 开启spring mvc注解 mvc:annotion-driven
- 静态资源处理
- viewResolver配置
- 扫描web相关的bean;实际上,关于bean的定义可以在统一的文件包中,而不必要分在三个层中进行配置.
Dao+Web+Service整合
- 配置dispatcher(servlet)
- 配置contextConfiglocation(这里就是所有的层的整合,当spring读取到所有的xml文件后,便可以互相调用和整合,因为实在一个完整的spring容器中)
- 配置servlet-mapping
秒杀业务的深入,高并发的优化
三种途径
1:前端cdn访问
2:redis缓存处理;
redis有windows版本可以使用
3:并发访问,通过存储过程将一系列的操作一起进行,降低因为网络延迟导致的行级锁
Spring+MVC+Mybatis整合的更多相关文章
- ssm整合说明与模板-Spring Spring MVC Mybatis整合开发
ssm整合说明 spring+spring mvc+mybatis 说明 源码下载 由于之前存在ssh框架,spring+struts+hibernate,其中spring负责aop与ioc,所以一般 ...
- spring, spring mvc, mybatis整合文件配置详解
转自:http://www.cnblogs.com/wxisme/p/4924561.html 使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用 ...
- Spring + Spring MVC + MyBatis 整合
1.所需要Jar包 ? <!-- Spring3.0.1包 --> org.springframework.web-3.0.1 系列 <!-- 公共包 --> sl ...
- Spring4+Spring MVC+MyBatis整合思路
1.Spring框架的搭建 这个很简单,只需要web容器中注册org.springframework.web.context.ContextLoaderListener,并指定spring加载配置文件 ...
- Spring+Spring MVC+MyBatis整合
一.准备工作 1.1导入所需jar包 1.2数据库 CREATE TABLE `t_customer` ( `id` ) NOT NULL AUTO_INCREMENT, `username` ...
- Spring MVC + MyBatis整合(IntelliJ IDEA环境下)
一些重要的知识: mybais-spring.jar及其提供的API: SqlSessionFactoryBean: SqlSessionFactory是由SqlSessionFactoryBuild ...
- Spring + Spring MVC + MyBatis框架整合
---恢复内容开始--- 一.Maven Web项目创建 如有需要,请参考:使用maven创建web项目 二.Spring + Spring MVC + MyBatis整合 1.Maven引入需要的J ...
- Spring3 + Spring MVC+ Mybatis 3+Mysql 项目整合(注解及源码)
Spring3 + Spring MVC+ Mybatis 3+Mysql 项目整合(注解及源码) 备注: 之前在Spring3 + Spring MVC+ Mybatis 3+Mysql 项目整合中 ...
- SSM整合配置(Spring+Spring MVC+Mybatis)
一.配置准备 通过Maven工程,在eclipse中整合SSM,并在Tomcat服务器上运行 在进行配置前,先理清楚要配置哪些文件,如图,除web.xml外,其余三个配置文件名称均可自定义: 如图 ...
随机推荐
- YOLO 算法框架的使用一(初级)
YOLO官方框架使用C写的,性能杠杠的,YOLO算法,我就不做过多介绍了.先简单介绍一下这个框架如何使用.这里默认是yolo2,yolo1接近过时.环境 推荐ubuntu 或者centos YOLO是 ...
- MYSQL无法使用索引的场景
设计优化–无法使用索引的场景 •通过索引扫描的记录数超过30%,变成全表扫描 •联合索引中,第一个索引列使用范围查询--只能用到部分索引 •联合索引中,第一个查询条件不是最左索引列 •模糊查询条件列最 ...
- Python函数篇
1.函数名的命名规则: 函数名必须以下划线或字母开头,可以包含任意字母.数字或下划线的组合.不能使用任何的标点符号: 函数名是区分大小写的. 函数名不能是保留字. 2. 形参和实参 形参:形式参数,不 ...
- selenium 执行js,实现滚动条
今天在写脚本的时候,学习了执行js,实现滚动条,对于scrollTop=10000中这个10000是怎么来的,还不是很了解,先将方法记录一下, 1.滚动条回到顶部: js_up="docum ...
- 模块化编程node
众所周知,Node.js 的出现造就了全栈工程师,因为它让 JavaScript 的舞台从浏览器扩大到了服务端 而 Node.js 的强大也得益于它庞大的模块库,所以学习 Node.js 第一步还得从 ...
- Koltin——最详细的可见性修饰符详解
在Kotlin中,不管是类,对象,接口,构造函数,函数,属性及其设置器都具有可见性修饰符.Kotlin中的可见性修饰符共四种.即public.protected.private.internal.在不 ...
- 浅谈PipelineDB系列一: Stream数据是如何写到Continuous View中的
PipelineDB Version:0.9.7 PostgreSQL Version:9.5.3 PipelineDB的数据处理组件: 从上图来看主要就是pipeline_streams,strea ...
- Netty与传统Server对比
前言 本文旨在介绍传统Socket服务端与NIO服务端的差异. 以餐厅服务员简单举例,每个客人对应一个请求. 传统Socket / OIO public class OioServer { @Supp ...
- 【tyvj P4879】骰子游戏
http://www.tyvj.cn/p/4879 首先,投一个骰子,每个数字出现的概率都是一样的.也就是不算小A的话,n个人投出x个骰子需要的次数和点数无关. 计数问题考虑dp,令f(i,j)为前i ...
- System.ServiceModel.CommunicationException: 已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。