首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring 引文学习手札(五) 业务层事务处理

2012-10-18 
Spring 注解学习手札(五) 业务层事务处理控制器层、持久层都有了一些介绍,剩下的就是业务层了!业务层中的关

Spring 注解学习手札(五) 业务层事务处理
控制器层、持久层都有了一些介绍,剩下的就是业务层了!
业务层中的关键问题在于事务控制!Spring的注解式事务处理其实很简单!

相关参考:
Spring 注解学习手札(一) 构建简单Web应用
Spring 注解学习手札(二) 控制层梳理
Spring 注解学习手札(三) 表单页面处理
Spring 注解学习手札(四) 持久层浅析
Spring 注解学习手札(五) 业务层事务处理
Spring 注解学习手札(六) 测试
Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
Spring 注解学习手札(八) 补遗——@ExceptionHandler


这里将用到以下几个包:

细化一下AccountService接口方法
AccountService.java

 
@Transactional(readOnly = true)只读属性
@Transactional(readOnly = false, rollbackFor = DataAccessException.class)只读关闭,遇到DataAccessException异常回滚!如果不对异常进行处理,该异常将一直向上层抛出,直至抛出到页面!
如果你的Eclipse集成了SpringIDE,你可以观察一下这时的xml配置文件和AccoutServiceImpl.java的变化!


这次,来个用户注册功能演示,故意在某个位置制造一个异常,看看是否正常回滚!
先看注册控制器
RegisterController.java

@InitBinder用于表单自定义属性绑定。这里我们要求输入一个日期格式的生日。
@RequestMapping(method = RequestMethod.GET)用于初始化页面。
@RequestMapping(method = RequestMethod.POST)用于提交页面。
再看注册页面
register.jsp

这里我用了一个JavaScript日期控制标签:

使用起来就像是这样:

非常好用!!! 当然,你完全可以使用JE上的那个JS控件!
接下来稍微调整一下AccountService接口及其实现AccountServiceImpl
AccountService.java
 的确有点雷人~
从架构考虑,这是符合业务要求的实现!如果用iBatis或者Hibernate,这个问题就有数据库一次IO处理完成了!
再看看AccountDao接口及其实现AccountDaoImpl
AccountDao.java
 
注册:

信息展示:

来制造一起事故!
先看看数据库目前的状况!

在AccountDaoImpl中来个破坏!
 
来个注册试试!

点击提交看看返回的异常!

异常回滚生效!
数据库中当然是什么都没有,我就不废话了!
相关实现见附件!


相关参考:
Spring 注解学习手札(一) 构建简单Web应用
Spring 注解学习手札(二) 控制层梳理
Spring 注解学习手札(三) 表单页面处理
Spring 注解学习手札(四) 持久层浅析
Spring 注解学习手札(五) 业务层事务处理
Spring 注解学习手札(六) 测试
Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
Spring 注解学习手札(八) 补遗——@ExceptionHandler


I can got the page source, but blank page.

why?

I can got the page source, but blank page.

why?

看一下附件中的源码,这个是个日历JS控件~ 3 楼 远去的渡口 2011-10-31   下载了你的工程,好象缺少一个方法,还缺了许多文件 ,实在没有看明白。
现在遇到一个棘手的问题,Spring通过注解的方式配置的事务没有起作用,还请多多指点。
问题链接是http://juliana-only.iteye.com/admin/blogs/1224916,有详细的描述,望赐教。

热点排行