浅谈Spring(三)
一、基础Spring的标准测试
1、导入spring与junit继承的jar
2、引入注解
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:/resources/applicationContext.xml")
public class UserDaoImplTest{
}
二、Spring的事务控制
1、事务的特点
a、隔离属性(isolation)
解决并发访问的问题。
脏读:Isolation.READ_COMMITED(该项为默认值)
一个事务读取了另一个事务没有提交的数据。
不可重复读:Isolaiton.REPEATABLE_READ(行锁)
在一个事务中,对相同的数据,进行多次查询,但是查询的结果不同。
幻影读:Isolation.SERIALZBLE(表锁)
在一个事务中,对某张表进行相同的操作,但是操作结果不一致。
ps:
并发安全:READ_COMMITED < REPEATABLE_READ < SERIALZBLE
并发效率:READ_COMMITED > REPEATABLE_READ > SERIALZBLE
建议:建议使用READ_COMMITED。
b、传播属性(propagation)
解决事务嵌套的问题。
Propagation.REQUIRED(该项为默认值) 增删改的业务方法
如果外部没有事务,则开启新的事务。
如果外部存在事务,则融合到外部的事务中。
Propagation.SUPPORTS 查询的业务方法
如果外部没有事务,则不开启事务。
如果外部存在事务,则融合到外部的事务中。
Propagation.REQUIRES_NEW
如果外部没有事务,则开启新的事务。
如果外部存在事务,则挂起外部的事务,新开启一个事务执行,执行完毕后,唤起外部事务。
c、只读属性(read-only)
查询的业务方法,指定read-only=true。
read-only=false(该项为默认值)
d、超时属性 (timeout)
当访问的数据,被别的事务锁住后,通过超时属性指定当前事务,最多等待多少秒。
timeout = -1(该项为默认值) 由数据库底层决定等待的时间。
//示例代码
//在类上加@Transactional注解,表示该类中的方法均添加事务,其属性采用默认值
@Transactional
public class AdminServiceImpl implements AdminService{
private AdminDao adminDao = new AdminDaoImpl();
//因为该方法执行查询操作,其传播属性和只读属性采用默认值是不合适的,所以单独设定。
@Transactional(propagation=Propagation.SUPPORTS,readOnly=true)
public Admin login(Admin admin){
return adminDao.login(admin);
}
}
2、配置文件
<!-- spring控制事务 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
浅谈Spring(三)的更多相关文章
- 浅谈Spring中的Quartz配置
浅谈Spring中的Quartz配置 2009-06-26 14:04 樊凯 博客园 字号:T | T Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在 ...
- 浅谈Spring的两种配置容器
浅谈Spring的两种配置容器 原文:https://www.jb51.net/article/126295.htm 更新时间:2017年10月20日 08:44:41 作者:黄小鱼ZZZ ...
- 浅谈C++三种传参方式
浅谈C++三种传参方式 C++给函数传参中,主要有三种方式:分别是值传递.指针传递和引用传递. 下面通过讲解和实例来说明三种方式的区别. 值传递 我们都知道,在函数定义括号中的参数是形参,是给函数内专 ...
- 1.1浅谈Spring(一个叫春的框架)
如今各种Spring框架甚嚣尘上,但是终归还是属于spring的东西.所以在这里,个人谈一谈对spring的认识,笔者觉得掌握spring原理以及spring所涉及到的设计模式对我们具有极大的帮助.我 ...
- 浅谈Spring MVC知识
关于MVC框架,我相信大家都不陌生,都会说也就是模型-视图-控制器这三层的框架结构,如果你参加面试的时候考官会问:“MVC框架是什么?你说一说.”其实我们都知道这个问题还需要问的,只要你是一个开发人员 ...
- 浅谈Spring解决循环依赖的三种方式
引言:循环依赖就是N个类中循环嵌套引用,如果在日常开发中我们用new 对象的方式发生这种循环依赖的话程序会在运行时一直循环调用,直至内存溢出报错.下面说一下Spring是如果解决循环依赖的. 第一种: ...
- 浅谈spring 声明式事物
此处主要讲讲事物的属性. 事物属性包含了五个方面: 1.传播行为 2.隔离规则 3.回滚规则 4.事物超时 5.是否只读 一.传播行为 事务的第一个方面是传播行为(propagation behavi ...
- 浅谈spring security 403机制
403就是access denied ,就是请求拒绝,因为权限不足 三种权限级别 一.无权限访问 <security:http security="none" pattern ...
- [SSH 3]以网上商城项目浅谈spring配置
导读:在做ITOO项目的时候,就用到了容器+反射,从而运用了依赖注入和依赖查找.如果看过WCF端的配置文件,那么对于这个spring的配置就很容易理解.本篇博客,是对于自己做的一个小项目中所运用到的s ...
随机推荐
- CSS中zoom和scale的区别
zoom和scale这两个东西都是用于对元素的缩放,但两者除了兼容性之外还有一些不同的地方.zoom缩放会将元素保持在左上角,而scale默认是中间位置,可以通过transform-origin来设置 ...
- div内嵌p,div等块元素出现的问题
div内嵌p,div等块元素出现的问题 http://caiceclb.iteye.com/blog/428085 div内部块级元素,比如p,div,设置外间距(margin)的话会怎样.本来还纳闷 ...
- SqlServer2008 数据库同步的两种方式 (发布、订阅)
尊重原著作:本文转载自http://www.cnblogs.com/tyb1222/archive/2011/05/31/2064944.html 上篇中说了通过SQL JOB的方式对数据库的同步,这 ...
- 剑指offier77页
/* * 输入字母判断第几列 */ import java.util.Scanner; public class JudgeClumns { public static void main(Strin ...
- (跨平台)cocos2d-x C++ or Object-C(前端)调用C# webservices(后台),实现交叉编译到Android/IOS/WinPhone等移动终端设备
1.2014年4月2号算是正式找到自己的实习工作-杭州美迪软件有限公司(移动物联事业部)合作于:四川管家婆总部移动终端代理,由于在校选编程专业语言C#和在浙大网新培训课程(C#.Asp.net开发)缘 ...
- Javascript基础示例:用JS写简易版贪吃蛇(面向对象)
废话不多说,代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...
- Mysql中表名作为参数的问题
近期由于程序的异常,导致数据库中创建了大量的表(约4000个),纠结的是表中的数据还都是有用的. 需要合并到一个表中,首先想到的就是使用存储过程来处理,但由于表名都是动态生成的,需要解决在存储过程中处 ...
- mysql函数操作(2)
<?php $dbh = new PDO('mysql:dbname=testdb;host=localhost', 'mysql_user', 'mysql_pwd'); $dbh->s ...
- spring4之依赖注入的三种方式
1.Setter注入 <bean id="helloWorld" class="com.jdw.spring.beans.HelloWorld"> ...
- spoj BRCKTS - Brackets 线段树
题目链接 给一个括号序列, 两种操作. 一种将某个位置的括号变反(左变右, 右变左), 第二种是询问这个括号序列是否合法. 线段树, 我们开两个数组lf, rg. 表示某个区间里面, 右边的左括号个数 ...