事务的控制(配置文件&&注解)
来源:互联网 发布:免费发短信软件哪个好 编辑:程序博客网 时间:2024/06/05 23:47
1.使用tx标签配置的拦截器
<!-- from the file 'context.xml' --><?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:aop="http://www.springframework.org/schema/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-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <bean id="fooService" class="x.y.service.DefaultFooService"/> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="get*" read-only="true"/> <tx:method name="*"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="fooServiceOperation" expression="execution(* x.y.service.FooService.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="fooServiceOperation"/> </aop:config> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@rj-t42:1521:elvis"/> <property name="username" value="scott"/> <property name="password" value="tiger"/> </bean> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean></beans>2.注解方式@Transactional (Spring框架)
默认式Spring处理声明式事务管理的规则遵守只在遇到unchecked exceptions时自动回滚
@Transactional 注解可以被应用于接口定义和接口方法、类定义和类的 public 方法上。
然而,请注意只是使用 @Transactional 注解并不会启用事务行为,
它仅仅 是一种元数据,能够被可以识别 @Transactional 注解和上述的配置适当的具有事务行为的beans所使用。
上面的例子中,其实正是 <tx:annotation-driven/>元素的出现 开启 了事务行为。
@Transactional 注解是用来指定接口、类或方法必须拥有事务语义的元数据。
如:“当一个方法开始调用时就开启一个新的只读事务,并停止掉任何现存的事务”。
默认的 @Transactional 设置如下:
1.事务传播设置是 PROPAGATION_REQUIRED
2.事务隔离级别是 ISOLATION_DEFAULT
3.事务是 读/写
4.事务超时默认是依赖于事务系统的,或者事务超时没有被支持。
任何 RuntimeException 将触发事务回滚,但是任何 checked Exception 将不触发事务回滚。
<?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:aop="http://www.springframework.org/schema/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-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <bean id="fooService" class="x.y.service.DefaultFooService"/> <tx:annotation-driven transaction-manager="txManager"/> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> </beans>
java文件
@Transactional(readOnly = true)public class DefaultFooService implements FooService { public Foo getFoo(String fooName) { } @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW) public void updateFoo(Foo foo) { }}
DefaultFooService
类在类的级别上被注解为只读事务,但是,这个类中的 updateFoo(Foo)
方法的 @Transactional
注解的事务设置将优先于类级别注解的事务设置。 0 0
- 事务的控制(配置文件&&注解)
- 使用注解完成事务控制
- Spring 配置文件中关于事务控制的3种方式
- java 事务的注解
- spring 注解事务控制注意点
- Spring4+Hibernate4配置注解事务控制
- 使用Spring中的 @Transactional注解控制事务
- 依赖注入(DI)和控制反转(IOC)的详细讲解 spring容器(spring注解实现,而不是xml配置文件)
- spring控制事务的控制
- 通过使用反射+动态代理+注解来实现对事务的控制
- spring事务的传播属性和事务隔离级别及配置事务(注解方式)
- 事务的并发控制(1)
- spring 的事务控制 (spring + Ibatis)
- .NET的事务控制
- .NET的事务控制.
- CSLA的事务控制
- .NET的事务控制
- JDBC的事务控制
- Java程序员从笨鸟到菜鸟全部博客目录
- Latch争用
- 图像匹配
- JAVA静态和非静态内部类
- 蜂鸣器电路中有大内容
- 事务的控制(配置文件&&注解)
- XAMPP虚拟主机VirtualHost配置小贴士
- SpringMVC与Struts2的对比
- ******************** fwrite--fread 函数 ********************
- Internet Explorer已停止工作?原来是np_tdiplat.dll惹的祸
- 黑马程序员——Java基础知识——语句、函数
- 老田没对象
- 操作系统中作业调度算法总结
- System Center VMM请注意不同语言版本的差异