diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java index 7f196227ab9..667f14aaa73 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java +++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java @@ -18,6 +18,7 @@ package org.springframework.transaction.interceptor; import java.lang.reflect.Method; import java.util.Properties; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import org.apache.commons.logging.Log; @@ -34,7 +35,6 @@ import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.TransactionSystemException; import org.springframework.transaction.support.CallbackPreferringPlatformTransactionManager; import org.springframework.transaction.support.TransactionCallback; -import org.springframework.util.ConcurrentReferenceHashMap; import org.springframework.util.StringUtils; /** @@ -133,7 +133,7 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init private BeanFactory beanFactory; private final ConcurrentMap transactionManagerCache = - new ConcurrentReferenceHashMap(4); + new ConcurrentHashMap(4); /** @@ -242,9 +242,10 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init public void afterPropertiesSet() { if (getTransactionManager() == null && this.beanFactory == null) { throw new IllegalStateException( - "Setting the property 'transactionManager' or running in a BeanFactory is required"); + "Set the 'transactionManager' property or make sure to run within a BeanFactory " + + "containing a PlatformTransactionManager bean!"); } - if (this.transactionAttributeSource == null) { + if (getTransactionAttributeSource() == null) { throw new IllegalStateException( "Either 'transactionAttributeSource' or 'transactionAttributes' is required: " + "If there are no transactional methods, then don't use a transaction aspect."); @@ -567,6 +568,7 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init public TransactionInfo(PlatformTransactionManager transactionManager, TransactionAttribute transactionAttribute, String joinpointIdentification) { + this.transactionManager = transactionManager; this.transactionAttribute = transactionAttribute; this.joinpointIdentification = joinpointIdentification;