日期:2014-05-17 浏览次数:21226 次
<tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="execute" propagation="REQUIRES_NEW"/> <tx:method name="*" read-only="true"/> </tx:attributes> </tx:advice>
@SuppressAjWarnings("adviceDidNotMatch") before(Object txObject) { transactionalMethodExecution(txObject) MethodSignature methodSignature = (MethodSignature) thisJoinPoint.getSignature(); Method method = methodSignature.getMethod(); TransactionInfo txInfo = createTransactionIfNecessary(method, txObject.getClass()); }
protected TransactionInfo createTransactionIfNecessary( TransactionAttribute txAttr, final String joinpointIdentification) { // If no name specified, apply method identification as transaction name. if (txAttr != null && txAttr.getName() == null) { txAttr = new DelegatingTransactionAttribute(txAttr) { public String getName() { return joinpointIdentification; } }; } TransactionStatus status = null; if (txAttr != null) { PlatformTransactionManager tm = getTransactionManager(); if (tm != null) { status = tm.getTransaction(txAttr); } else { if (logger.isDebugEnabled()) { logger.debug("Skipping transactional joinpoint [" + joinpointIdentification + "] because no transaction manager has been configured"); } } } return prepareTransactionInfo(txAttr, joinpointIdentification, status); }
if (getTransactionManager() == null) { throw new TransactionSuspensionNotSupportedException( "JtaTransactionManager needs a JTA TransactionManager for suspending a transaction: " + "specify the 'transactionManager' or 'transactionManagerName' property"); }
package com.achievo.framework.transaction.aspectj; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.springframework.core.Ordered; import org.springframework.transaction.annotation.AnnotationTransactionAttributeSource; import org.springframework.transaction.interceptor.AchievoAbstractTransactionA