- 浏览: 386223 次
- 性别:
- 来自: 成都
最新评论
-
宋建勇:
你爷爷的,这个很给力啊!找了好久了!赞一个!
maven的属性过滤功能 -
蒲公英的约定:
其實也可以通過尋找id來得到組建,不過還是綁定方便得多。不知道 ...
JSF中UI控件binding属性的用法 -
蒲公英的约定:
...
JSF中UI控件binding属性的用法 -
le5u:
请问,怎么给tableviewer加行编号呀
tableviewer -
Surmounting:
现在火狐好像把 iframe 的 contentDocumen ...
iframe交互使用大全
自动支持事务的类
package aaa; import java.util.Properties; import org.springframework.aop.framework.ProxyFactory; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor; import org.springframework.transaction.interceptor.TransactionInterceptor; import org.springframework.util.Assert; /** * <p>解析JDBC事务配置</p> *<meta key="tx" value="save*:PROPAGATION_REQUIRED; "/> *<table border="1" width="788"> <tbody> <tr> <td width="274" align="center">隔离等级</td> <td width="399" align="center">描述</td> </tr> <tr> <td>ISOLATION_DEFAULT</td> <td align="center">默认隔离等级<br /> </td> </tr> <tr> <td>ISOLATION_READ_UNCOMMITTED<br /> </td> <td>最低隔离等级,仅仅保证了读取过程中不会读取到非法数据</td> </tr> <tr> <td>ISOLATION_READ_COMMITTED<br /> </td> <td>某些数据库的默认隔离等级;保证了一个事务不会读到另外一个并行事务已修改但未提交的数据</td> </tr> <tr> <td>ISOLATION_REPEATABLE_READ<br /> </td> <td>比上一个更加严格的隔离等级。保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据</td> </tr> <tr> <td>ISOLATION_SERIALIZABLE</td> <td>性能代价最为昂贵,最可靠的隔离等级。所有事务都严格隔离,可视为各事务顺序执行</td> </tr> </tbody> </table> <p> </p> <p align="left">传播途径(Propagation Behavior)</p> <p> </p> <table border="1" width="791"> <tbody> <tr> <td width="253" align="center">Propagation Behavior<br /> </td> <td width="522" align="center">描述<br /> </td> </tr> <tr> <td>PROPAGATION_REQUIRED </td> <td>支持现有事务。如果没有则创建一个事务</td> </tr> <tr> <td> PROPAGATION_SUPPORTS </td> <td>支持现有事务。如果没有则以非事务状态运行。</td> </tr> <tr> <td> PROPAGATION_MANDATORY </td> <td>支持现有事务。如果没有则抛出异常。</td> </tr> <tr> <td> PROPAGATION_REQUIRES_NEW </td> <td>总是发起一个新事务。如果当前已存在一个事务,则将其挂起。</td> </tr> <tr> <td>PROPAGATION_NOT_SUPPORTED </td> <td>不支持事务,总是以非事务状态运行,如果当前存在一个事务,则将其挂起。</td> </tr> <tr> <td> PROPAGATION_NEVER </td> <td> 不支持事务,总是以非事务状态运行,如果当前存在一个事务,则抛出异常。</td> </tr> <tr> <td> PROPAGATION_NESTED </td> <td>如果当前已经存在一个事务,则以嵌套事务的方式运行,如果当前没有事务,则以默认方式(第一个)执行</td> </tr> </tbody> </table> * */ public class TransactionManager implements BeanPostProcessor, BeanFactoryPostProcessor { private ConfigurableListableBeanFactory beanFactory; private DataSourceTransactionManager transactionManager; private static final String META_TRANSACTION_METHODS_NAME = "tx"; public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (beanFactory.containsBean(beanName)) { BeanDefinition beanDefinition = beanFactory .getBeanDefinition(beanName); String transactionAttributeValue = beanDefinition .getAttribute(META_TRANSACTION_METHODS_NAME) != null ? beanDefinition .getAttribute(META_TRANSACTION_METHODS_NAME).toString() : null; if (transactionAttributeValue == null) { return bean; } Assert.hasText(transactionAttributeValue, "if 'tx' meta is setted , 'tx' meta can't be empty! [ bean id:" + beanName + "]"); TransactionInterceptor transactionInterceptor = new TransactionInterceptor(); transactionInterceptor.setTransactionManager(transactionManager); Properties transactionAttributes = new Properties(); parseAttributes(transactionAttributes,transactionAttributeValue); transactionInterceptor .setTransactionAttributes(transactionAttributes); TransactionAttributeSourceAdvisor advisor = new TransactionAttributeSourceAdvisor( transactionInterceptor); ProxyFactory proxyFactory = new ProxyFactory(); proxyFactory.addAdvisor(advisor); proxyFactory.setTarget(beanFactory.getBean(beanName)); return proxyFactory.getProxy(); } return bean; } private void parseAttributes(Properties transactionAttributes, String transactionAttributeValue) { String[] split = transactionAttributeValue.split(";"); for (int i = 0; i < split.length; i++) { String[] splitcolon = split[i].split(":"); if (splitcolon.length < 2) { break; } Assert.hasText(splitcolon[0]," can't filled with empty string "); Assert.hasText(splitcolon[1]," can't filled with empty string "); transactionAttributes.setProperty(splitcolon[0], splitcolon[1]); } } public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { return bean; } public void postProcessBeanFactory( ConfigurableListableBeanFactory beanFactory) throws BeansException { this.beanFactory = beanFactory; } public void setTransactionManager( DataSourceTransactionManager transactionManager) { this.transactionManager = transactionManager; } }
发表评论
-
已有.so库,用swig再编译JNI库
2020-01-16 09:19 343更多请点击链接查看详情 -
rails cancan AssociationTypeMismatch
2013-12-29 13:32 1149ActiveRecord::AssociationType ... -
Websphere中JCA连接共享策略
2011-04-20 13:18 2158Websphere中JCA连接共享策略 (学习笔记 ) ... -
类似于‘路过网’的一个随机聊天网站
2011-01-17 15:16 2835在2009年闲来没事儿写的一个类似‘路过网’的一个随机聊天网站 ... -
两年后的自己—-------------------“散”文
2011-01-07 22:05 51为什么给散字打个引 ... -
javascript ext
2008-09-02 11:43 937<script> var x ... -
將myeclipse項目轉換成WTP項目
2008-08-25 09:21 2954将一个已经存在的项目转换成WTP 的Web项目 修改ecli ... -
DBCP出现连接无法回收的解决方案
2008-08-22 22:27 1280在配置hibernate连接释放的时候千万不要忘了 ... -
模式对话框传值
2008-08-22 15:28 1964<script language=javascrip ... -
基于SCHEMA的AOP配置
2008-08-18 10:09 1033其实本列想用JAVA5的注释功能的,但是想了想:当我发布了程序 ... -
https introduce in acegi book
2008-08-14 14:52 1081If session hijacking is conside ... -
动态创建Authentication对象
2008-08-13 17:29 1342WebApplicationContext webApplic ... -
CVS创建用户
2008-04-20 15:23 1418CVS添加用户的过程 D:\cvs\CVSROOT>se ... -
INFORMIX的操作
2008-03-15 10:00 1474/*#include <decimal.h> #i ... -
根类加载器的一个特性
2007-12-22 21:55 1151java 代码 public cl ... -
FireBug A Good JavaScript DEBUG Tool
2007-12-22 09:02 1303Firebug integrates with Firefo ... -
iframe交互使用大全
2007-12-18 14:38 4390被嵌套的网页中可以使用parent.【函数名】来访问父级别的j ... -
Interface Tag
2007-12-14 11:17 1048<link rel="stylesheet ... -
rtexprvalue
2007-12-14 10:26 2655其实以前也有写过自定义标签, 但是没有注意到过<rtex ... -
asfsdafsadf
2007-12-11 11:18 1230Dear all, I am pleased to ann ...
相关推荐
在提供的`Day01_Tx`文件中,可能包含了一些示例代码,如配置文件、服务层代码或数据库操作类,用于展示Spring如何实现半自动bean管理和事务控制。通过分析这些代码,你可以更深入地理解这两个概念,并将它们应用到...
**JDBC事务**:这是最基本的事务管理方式,通过`Connection`对象的`setAutoCommit()`来开启或关闭自动提交,`commit()`和`rollback()`用于提交或回滚事务。JDBC事务局限于单个数据库连接,无法处理跨数据库的事务。 ...
在加入事务支持的过程中,Struts并不直接参与事务管理,但可以通过Action类的Service注入来调用Spring管理的事务方法。 总结来说,SSH框架中的事务支持主要由Spring提供,通过声明式或编程式的方式实现。Spring 2.0...
C# 中增加 SQLite 事务操作支持与使用方法 在 C# 中使用 SQLite 数据库时,事务操作是非常重要的一部分。事务操作可以确保数据库的数据一致性和完整性,避免数据不一致的情况。下面将详细介绍 C# 中增加 SQLite ...
在.NET框架中,主要通过System.Transactions命名空间下的类来支持分布式事务。以下是一些关键类的简要介绍: 1. **TransactionScope**: 这是.NET中处理分布式事务的核心类。当你创建一个TransactionScope实例时,它...
默认情况下,如果在事务中抛出未检查异常(继承自`RuntimeException`)或`Error`,Spring会自动回滚事务。而检查异常(继承自`Exception`)则不会导致回滚,除非在`@Transactional`中显式指定。 4. **事务的ACID...
例如,通过在方法上使用 `@Transactional` 注解,可以轻松地将事务管理应用于特定的方法或类。 #### 六、注意事项 虽然 Spring 和 Spring Boot 提供了强大的事务管理支持,但在实际开发中还需要注意以下几点: - *...
.NET框架提供了强大的事务处理功能,支持手动事务和自动事务两种方式。 #### 六、.NET中的手动事务处理 手动事务处理是指程序员需要显式地管理事务的生命周期,包括事务的启动、提交或回滚等操作。 1. **ADO.NET...
3. **事务管理级别**:ASP.NET支持三种事务管理级别:无事务、自动事务和显式事务。无事务是最简单的形式,不保证事务特性。自动事务会在每个SQL命令后自动提交,而显式事务则允许开发者手动控制事务的开始、提交和...
开发者可以使用`PlatformTransactionManager`接口及其实现类(如`DataSourceTransactionManager`)来显式地开始、提交、回滚事务。例如,通过`TransactionTemplate`或者直接使用`TransactionStatus`接口来管理事务的...
5. **开启AOP注解自动代理**:通过`<aop:aspectj-autoproxy/>`启用AspectJ注解的支持。 6. **编写切面类**:定义一个切面类,并使用`@Aspect`注解标注。 7. **定义切入点和通知**:使用`@Pointcut`定义切入点,使用`...
若出现异常,Spring会自动回滚事务,以保证数据的一致性。 4. **事务隔离**:Spring支持多种事务隔离级别,如READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE,不同的隔离级别能防止特定类型的...
方法被调用时自动开启事务,在事务范围内使用则使用同一个事务,否则开启新事务。 2、Propagation.REQUIRES_NEW 无论何时自身都会开启事务 3、Propagation.SUPPORTS 自身不会开启事务,在事务范围内则...
浅谈SpringBoot之事务处理机制 ...它提供了统一的机制来处理不同数据访问技术的事务处理,并支持声明式事务和类级别的事务支持。同时,Spring Boot也为我们提供了自动配置的事务管理器,方便我们使用事务机制。
围绕Poxy的动态代理能够自动的提交和回滚事务。 PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务...
MSMQ 支持事务性消息传递,允许在消息队列中发送和接收消息时使用事务。`.NET` 提供 `System.Messaging` 命名空间来进行事务性消息处理。当消息队列操作失败时,事务可以回滚,确保消息不会丢失。 4. **Enterprise...
8. **事务嵌套**:Spring支持事务嵌套,当一个事务方法被另一个事务方法调用时,Spring会创建一个子事务,子事务的提交或回滚不影响父事务。 9. **事务隔离级别**:包括`READ_UNCOMMITTED`、`READ_COMMITTED`、`...
在XML配置文件中,我们可以使用`<tx:annotation-driven>`元素开启基于注解的事务管理,或者在Java配置类中使用`@EnableTransactionManagement`注解。然后,在需要事务管理的方法上添加`@Transactional`注解,Spring...
- **自动化事务处理(如COM+)**:在.NET框架下,可以向类中添加属性以声明事务处理需求。这种模型简化了分布式事务的配置和管理,特别适用于涉及多个组件和资源管理器的复杂系统。 #### 选择事务处理模型 在决定...