`
gsvince
  • 浏览: 54697 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

TransactionAttributeSource,TransactionAttribute

阅读更多
[/b][b]每一个方法执行都会应用事务,它回传的transactionAttribute实例的默认传播行为是PROPAGATION_REQUIRED,隔离层级为ISOLATION_REFAULE

<bean id="informationDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  		  <property name="proxyInterfaces">
		  	<list>
		  		<value>
		  			com.gsvince.hibernate.Idao.IInformationDAO
		  		</value>
		  	</list>
		  </property>
		  <property name="transactionManager">
		   <ref bean="transactionManager" />
		  </property>
		  <property name="target">
		   <ref local="informationDAO" />
		  </property>
		  <property name="transactionAttributeSource">
		   <ref bean="transactionAttributeSource"/>
		  </property>
	</bean>
	
	<bean id="transactionAttributeSource" class="org.springframework.transaction.interceptor.MatchAlwaysTransactionAttributeSource">
	</bean>


也可以使用org.springframework.transaction.interceptor.DefaultTransactionAttribute,并设置自己的事务策略,之后设置给transactionAttributeSource,例如:

<bean id="myTransactionAttribute" class="org.springframework.transaction.interceptor.DefaultTransactionAttribute">
		<property name="propagationBehaviorName" 
				value="PROPAGATION_REQUIRES_NEW"/>
		<property name="isolationLevelName" 
				value="ISOLATION_REPEATABLE_READ"/>
	</bean>
	
	<bean id="transactionAttributeSource" class="org.springframework.transaction.interceptor.MatchAlwaysTransactionAttributeSource">
		<property name="transactionAttribute" 
				ref="myTransactionAttribute"/>
	</bean>

	<bean id="informationDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  		  <property name="proxyInterfaces">
		  	<list>
		  		<value>
		  			com.gsvince.hibernate.Idao.IInformationDAO
		  		</value>
		  	</list>
		  </property>
		  <property name="transactionManager">
		   <ref bean="transactionManager" />
		  </property>
		  <property name="target">
		   <ref local="informationDAO" />
		  </property>
		  <property name="transactionAttributeSource"
		   		ref="transactionAttributeSource"/>
	</bean>


也可以使用org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource来指定某些方法要应用事务,以及要应用的事务策略,例如:

<bean id="transactionAttributeSource" class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource">
		<property name="properties">
			<props>
				<prop key="edit*">PROPAGATION_REQUIRED</prop>
			    <prop key="insert*">PROPAGATION_REQUIRED</prop>
			    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
			    <prop key="delete*">PROPAGATION_REQUIRED</prop>
			</props>
		</property>
	</bean>
	
	<bean id="informationDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  		  <property name="proxyInterfaces">
		  	<list>
		  		<value>
		  			com.gsvince.hibernate.Idao.IInformationDAO
		  		</value>
		  	</list>
		  </property>
		  <property name="transactionManager">
		   <ref bean="transactionManager" />
		  </property>
		  <property name="target">
		   <ref local="informationDAO" />
		  </property>
		  <property name="transactionAttributeSource"
		   		ref="transactionAttributeSource"/>
	</bean>	

在NameMatchTransactionAttributeSource的"properties"属性上,可以指定方法名称与事务策略,方法名称的指定可以指定全名,也可以使用Wildcard来指定,例如上面的指定中,只要方法名以insert开头的都会应用相对应的事务策略。
分享到:
评论

相关推荐

    EJB_transaction(EJB事物)

    EJB事物详细讲解:TransactionAttributeType.MANDATORY;TransactionAttributeType.REQUIRED;TransactionAttributeType.REQUIRES_NEW;TransactionAttributeType.SUPPORTS;TransactionAttributeType.NOT_SUPPORTED...

    Spring源代码解析(六):Spring声明式事务处理.doc

    1. 对在上下文中配置的属性的处理,这里涉及的类是 TransactionAttributeSourceAdvisor,这是一个通知器,用它来对属性值进行处理,属性信息放在 TransactionAttribute 中来使用,而这些属性的处理往往是和对切入点...

    Spring事务相关类Uml图

    在Spring框架中,事务管理...例如,`PlatformTransactionManager`的实现类如何与`TransactionDefinition`和`TransactionStatus`交互,`TransactionInterceptor`如何利用`TransactionAttribute`来决定事务的边界,以及`...

    C#自己实现AOP的事务操作

    首先,我们需要创建一个表示事务特性的自定义Attribute,例如`TransactionAttribute`。这个特性可以包含关于事务的配置信息,如隔离级别、是否只读等。下面是一个简单的示例: ```csharp using System; using ...

    ejb3.0 分布式事务

    例如,`@TransactionAttribute(TransactionAttributeType.REQUIRED)`表示如果当前没有事务,容器会开始一个新的;`@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)`则会在新事务中执行该方法,即使...

    开源框架 Spring Gossip

    Spring 对交易的支援 JDBC 编程式交易管理 JDBC 宣告式交易管理 交易的属性介绍 TransactionAttributeSource、 TransactionAttribute Hibernate 支援 Spring 整合了对 Hibernate 的设定...

    EJB3 In Action download

    4. **注解(Annotations)**:EJB3大量使用注解来声明组件的行为,如`@WebService`、`@TransactionAttribute`等,减少了XML配置文件的使用,提高了开发效率。 5. **依赖注入(Dependency Injection, DI)**:EJB3...

    ejb3.0实例教程的例子

    5. **-aspect-oriented programming (AOP) 支持**:EJB 3.0通过声明式事务管理(`@TransactionAttribute`)和安全访问控制(`@RolesAllowed`)实现了面向切面编程的思想,使得开发者无需编写过多的底层代码。...

    EJB3入门

    EJB3提供了容器管理的事务(Container Managed Transactions),开发者只需在方法上添加`@TransactionAttribute`注解,如`@TransactionAttribute(TransactionAttributeType.REQUIRED)`,即可让容器自动处理事务的...

    ejb3.0实例教程

    6. **事务管理(Transaction Management)**:EJB容器自动处理事务,可以根据业务需求通过注解如`@TransactionAttribute`来设置事务的属性,如REQUIRED、REQUIRES_NEW等。 7. **并发控制(Concurrency Control)**...

    EJB3.0开发

    根据不同的方法注解,如`@TransactionAttribute(TransactionAttributeType.REQUIRED)`,容器会自动启动和管理事务。 7. **JAXB and JAX-RS**:EJB3.0经常与JAXB(Java Architecture for XML Binding)和JAX-RS...

    ejb3.0

    6. **容器管理的事务(Container-Managed Transactions)**:EJB 3.0提供自动事务管理,开发者只需通过设置事务属性(如`@TransactionAttribute`),容器就会根据这些属性自动处理事务的开始、提交或回滚。...

    Jboss下EJB3实例教程

    - 容器管理的事务:EJB3.0支持声明式事务管理,开发者只需在接口或方法上添加@TransactionAttribute注解即可。 2. **Jboss与EJB3.0**: - JBoss AS (Application Server) 是一个开源的应用服务器,完全支持EJB3.0...

    EJB3.0 in action

    - **示例**:使用 `@TransactionAttribute` 注解控制事务属性: ```java @Stateless @TransactionAttribute(TransactionAttributeType.REQUIRED) public class MySessionBean { public void doSomething() { /...

    JavaEE5学习笔记07-Web层与EJB集成总结

    在上述示例中,`@TransactionManagement`注解被用来指定事务管理策略,而`@TransactionAttribute`则定义了具体的方法事务属性。 调用EJB时,通常通过JNDI(Java Naming and Directory Interface)来查找并实例化EJB...

    EJB003软件开发考试培训资料

    - EJB事务管理:EJB支持声明式事务,通过在方法上添加事务属性(如@TransactionAttribute)来定义事务边界。容器负责事务的开始、提交、回滚等操作,也可以使用编程式事务管理,由开发者显式控制。 总的来说,EJB...

    EJB轻松学习进阶之三

    在实际开发中,EJB还涉及到其他组件,如EntityBean(处理持久化数据)、MessageDrivenBean(处理消息队列)以及更多的接口和服务,如EJBContext(提供上下文信息)和TransactionAttribute(定义事务属性)。...

    ejb3.rar_EJB3

    EJB3提供了自动的事务管理,开发者可以通过`@TransactionAttribute`注解指定事务属性,如REQUIRED、REQUIRES_NEW等,以控制事务的边界。 此外,EJB3还引入了依赖注入(Dependency Injection,DI)和面向切面编程...

    EJB3.0源代码

    通过`@TransactionAttribute`注解,开发者可以选择不同的事务策略,如REQUIRED、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER和SUPPORTS,无需手动管理事务开始和结束。 消息驱动Bean(MDB)在EJB 3.0中也得到了...

    中文最新EJB3.0实例教程下载

    默认情况下,容器会自动为EJB方法提供适当的事务边界,开发者可以通过`@TransactionAttribute`注解来定制事务策略。 在《中文最新EJB3.0实例教程》中,你将学习如何创建和部署EJB3.0组件,如何使用JPA进行数据持久...

Global site tag (gtag.js) - Google Analytics