上一篇讲述了DAO 层,mybatis实现数据库的连接,DAO层接口设计,以及mybtis和spring的整合。DAO层采用接口设计方式实现,接口和SQL实现的分离,方便维护。DAO层所负责的仅仅是接口的设计和实现,而负责的逻辑即一个或多个DAO层接口的拼接是在Sevice层中完成。这篇文章接上篇文章,主要讲述Service层的实现、和Spring的整合以及声明如何声明事物。

###一、Service层接口设计
业务接口设计应当站在“使用者”角度设计接口,应遵循三个规范:合理的命令,明确的参数,返回结果(正常接口/异常结果)。本例子采用的Java高并发的秒杀API系列课程的例子,创建设计的业务逻辑接口如下:

直接上代码了,在这里讲下秒杀业务的逻辑:首先是获取秒杀列表,点击列表进入秒杀详情页,这时获取系统时间,如果秒杀开始,获取秒杀地址,点击秒杀,执行秒杀。所以业务逻辑也只设计了这相关的4个业务逻辑。其中使用了dto层去传递响应数据,以及自定义异常,所有的异常都继承运行异常,这是为了方便spring自动回滚,这两个知识点,自行看源码。

和上一篇文章使用spring托管dao接口一样,这里也需要用 spring 托管service. spring ioc 使用对象工程模式,对所有的注入的依赖进行了管理,暴露出了一致性的访问接口,当我们需要某个对象时,直接从spring ioc中取就行了,不需要new,也不需要对它们的生命周期进行管理。更为重要的是spring 自动组装依赖,比如最终的接口controller依赖service,而service依赖dao,dao依赖sessionfactory,而sessionfactory依赖datasource,这些层层依赖是通过spring管理并层层组装,只要我们简单配置和注解就可以方便的使用,代码的分层和编程的艺术在spring框架中展现得淋漓尽至。

本项目采用spring ioc :

1.xml配置

2.包扫描

3.annotation注解。

创建sping-service.xml

采用包扫描+注解方式,首先在xml中声明包扫描:

然后在org,forezp.service包下的类采用注解。比如@Service 注解声明是一个service, @Autowired注入service 所需依赖。

只需要一个包扫描和几个简单的注解就可以将service注解到spring ioc容器中。

在秒杀案例中,我们需要采用事物来防止数据的正确性,防止重复秒杀,防止库存不足、库存剩余等情况。一般使用事物需要开启事物/经常一些列的操作,提交或者回滚。spring声明式事物,就是将事物的开启、雅思培训一般多少钱提交等托管给spring管理,我们只需要注重如何修改数据。

配置spring 声明式事物
在spring-service.xml中配置:

在需要事物的业务逻辑下加 @Transactional注解。
比如在开启秒杀方法:

注意:

1开发团队达成一致约定,明确标注事务方法的编程风格

2:保证事务方法的执行时间尽可能短,不要穿插其他网络请求,RPC/HTTP请求或者剥离到事务方法外

3:不是所有的方法都需要事务,如只有一条修改操作,只读操作不需要事务控制

需要配置:

@ContextConfiguration({
“classpath:spring/spring-dao.xml”,
“classpath:spring/spring-service.xml”
})
直接上代码:

这篇文章主要讲了service业务接口的编写和实现,以及采用xml和注解方式讲service 注入到spring ioc,以及声明式事物,不得不感叹spring 的强大。下一篇文章讲讲述 web层的开发,spring mvc的相关配置。感谢大家,再接再厉,晚安。_

转载于:https://www.cnblogs.com/yujingyua/p/9809706.html

一篇SSM框架整合友好的文章(二)相关推荐

  1. ssm框架整合_框架整合战斗压缩粮篇SpringCloud+SpringBoot+SSM

    各位小伙伴今天又敲了多少Bug了,今天改Bug又花了多长时间啦,我们每天就是敲Bug,敲完改,改完敲,习惯就好啦,心态摆正.Debug起来!!! 上次是Dubbo整合,今天终结篇Cloud整合,不要废 ...

  2. 全栈开发实战 | SSM框架整合完整教程

    "一个人最好的状态:梦想藏在心里,行动落于腿脚." 目录 1.前言 2.基本概念 2.1 MyBatis 2.2 Spring 2.3 SpringMVC 3.开发环境搭建 3.1 ...

  3. SSM框架整合完整案例

    SSM框架整合 一.整合思路 二.案例实战 1. 项目前期准备 2. 整合dao层 ① mybatis全局配置文件(SqlConfig.xml) ② 配置spring.xml ③ 编写POJO类(ja ...

  4. SSM框架整合+简单案例实现

    SSM框架整合+简单案例实现 文章目录 前言 一.Spring+SpringMVC+Mybatis框架整合 1.建立一个新的web项目 2.所需jar包 3.建立数据库表与实体类之间的映射 4.web ...

  5. SSM Chapter 12 SpringMVC扩展和SSM框架整合

    SSM Chapter 12 SpringMVC扩展和SSM框架整合 笔记 本章目标: 掌握JSON对象的处理 理解数据转换和格式化 了解本地化 掌握Spring MVC+Spring+MyBatis ...

  6. (转)淘淘商城系列——SSM框架整合之Dao层整合

    http://blog.csdn.net/yerenyuan_pku/article/details/72721093 一个项目中往往有三层即Dao层.Service层和Web层,看标题就知道了,本文 ...

  7. SpringMvc框架及SSM框架整合

    SpringMvc框架及SSM框架整合 一.SpringMvc相关知识 1.Spring和SpringMvc的关系 ​ 1.1.Spring是IOC和AOP的容器框架,SpringMVC是基于Spri ...

  8. JavaEE——SSM框架整合实现学生信息注册案例

    目录 十.SSM框架整合实现学生信息注册案例 1. 创建06-ssm的web项目 2. 修改web.xml版本为4.0 3. 更新pom.xml文件 4. jdbc的属性文件和日志文件 5. appl ...

  9. java ssm小案例_简易的SSM框架整合小案例

    简易的SSM框架整合小案例 一.创建一个web工程的maven项目 1.项目名随便起 2.选择好你的maven路径,然后finish 二.配置pom.xml文件 org.springframework ...

最新文章

  1. JAVA多线程之Synchronized、wait、notify实例讲解
  2. 除法取模(比赛常用)
  3. mysql多字段修改update_MySQL ------ 触发器(TRIGGER)(二十七)
  4. java 资源锁定_如何在Java中创建时正确锁定资源
  5. \pset 、\x命令
  6. JSP中meta http-equiv=pragma content=no-cache属性ttp-equiv功能介绍转载
  7. jqgrid学习(二)
  8. web打印插件hiprint
  9. 删除Windows 7系统保留分区100MB
  10. geem2登陆器修改服务器列表,Gee引擎怎么更换登陆器皮肤 GeeM2传奇编辑自定义皮肤的方法讲解...
  11. c语言析构函数的作用,详解析构函数出现的必要性
  12. 古体字与简体字对照表_常用繁体字与简体字对照表
  13. html单元格边框斜线,excel表头三斜线 将线条的两端放在单元格的边框上
  14. android p是哪个版本,android p是什么版本
  15. 520表白网站(附源码与修改教程)
  16. matlab波形相似系数,如何用matlab计算波形相似系数
  17. java术语(PO/POJO/VO/BO/DAO/DTO)
  18. 洛谷-P1577-切绳子
  19. 上行物理信道 PUSCH
  20. 单位集体户口迁回原籍流程

热门文章

  1. php怎么接受,如何使php://input接收到另一个php的数据
  2. tf.keras.layers.Resizing 示例 改变维度的层
  3. python 设置开机自动启动 .py 文件
  4. 3.推荐系统(矩阵分解)
  5. 2.合并区间(LeetCode第56题)
  6. mysql两列查询结果列拼接一个表输出_sql select语句,查询出两列结果拼接在一起...
  7. wampsever的mysql密码_WampServer修改Mysql密码的步骤
  8. 机器人 瓷砖墙面清洗_瓷砖铺贴注意事项有哪些?
  9. 编写100多行的c语言程序,C语言编程100多例.doc
  10. Tomcat(一):背景知识和安装tomcat