Class MethodMapTransactionAttributeSource
java.lang.Object
org.springframework.transaction.interceptor.MethodMapTransactionAttributeSource
- All Implemented Interfaces:
org.springframework.beans.factory.Aware,org.springframework.beans.factory.BeanClassLoaderAware,org.springframework.beans.factory.InitializingBean,org.springframework.context.EmbeddedValueResolverAware,TransactionAttributeSource
public class MethodMapTransactionAttributeSource
extends Object
implements TransactionAttributeSource, org.springframework.context.EmbeddedValueResolverAware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.InitializingBean
Simple
TransactionAttributeSource implementation that
allows attributes to be stored per method in a Map.- Since:
- 24.04.2003
- Author:
- Rod Johnson, Juergen Hoeller
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final org.apache.commons.logging.LogLogger available to subclasses. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddTransactionalMethod(Class<?> clazz, String mappedName, TransactionAttribute attr) Add an attribute for a transactional method.voidaddTransactionalMethod(Method method, TransactionAttribute attr) Add an attribute for a transactional method.voidaddTransactionalMethod(String name, TransactionAttribute attr) Add an attribute for a transactional method.voidEagerly initializes the specified"methodMap", if any.booleangetTransactionAttribute(Method method, Class<?> targetClass) Return the transaction attribute for the given method, ornullif the method is non-transactional.inthashCode()protected voidinitMethodMap(Map<String, TransactionAttribute> methodMap) Initialize the specified"methodMap", if any.protected booleanReturn if the given method name matches the mapped name.voidsetBeanClassLoader(ClassLoader beanClassLoader) voidsetEmbeddedValueResolver(org.springframework.util.StringValueResolver resolver) voidsetMethodMap(Map<String, TransactionAttribute> methodMap) Set a name/attribute map, consisting of "<fully-qualified class name>.<method-name>" method names (for example, "com.mycompany.mycode.MyClass.myMethod") andTransactionAttributeinstances (or Strings to be converted toTransactionAttributeinstances).toString()Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.springframework.transaction.interceptor.TransactionAttributeSource
hasTransactionAttribute, isCandidateClass
-
Field Details
-
logger
protected final org.apache.commons.logging.Log loggerLogger available to subclasses.
-
-
Constructor Details
-
MethodMapTransactionAttributeSource
public MethodMapTransactionAttributeSource()
-
-
Method Details
-
setMethodMap
Set a name/attribute map, consisting of "<fully-qualified class name>.<method-name>" method names (for example, "com.mycompany.mycode.MyClass.myMethod") andTransactionAttributeinstances (or Strings to be converted toTransactionAttributeinstances).Intended for configuration via setter injection, typically within a Spring bean factory. Relies on
afterPropertiesSet()being called afterwards.- Parameters:
methodMap- saidMapfrom method name to attribute value- See Also:
-
setEmbeddedValueResolver
public void setEmbeddedValueResolver(org.springframework.util.StringValueResolver resolver) - Specified by:
setEmbeddedValueResolverin interfaceorg.springframework.context.EmbeddedValueResolverAware
-
setBeanClassLoader
- Specified by:
setBeanClassLoaderin interfaceorg.springframework.beans.factory.BeanClassLoaderAware
-
afterPropertiesSet
public void afterPropertiesSet()Eagerly initializes the specified"methodMap", if any.- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- See Also:
-
initMethodMap
Initialize the specified"methodMap", if any.- Parameters:
methodMap- a Map from method names toTransactionAttributeinstances- See Also:
-
addTransactionalMethod
Add an attribute for a transactional method.Method names can end or start with "*" for matching multiple methods.
- Parameters:
name- class and method name, separated by a dotattr- attribute associated with the method- Throws:
IllegalArgumentException- in case of an invalid name
-
addTransactionalMethod
Add an attribute for a transactional method. Method names can end or start with "*" for matching multiple methods.- Parameters:
clazz- target interface or classmappedName- mapped method nameattr- attribute associated with the method
-
addTransactionalMethod
Add an attribute for a transactional method.- Parameters:
method- the methodattr- attribute associated with the method
-
isMatch
Return if the given method name matches the mapped name.The default implementation checks for "xxx*", "*xxx" and "*xxx*" matches, as well as direct equality.
- Parameters:
methodName- the method name of the classmappedName- the name in the descriptor- Returns:
- if the names match
- See Also:
-
PatternMatchUtils.simpleMatch(String, String)
-
getTransactionAttribute
@Nullable public TransactionAttribute getTransactionAttribute(Method method, @Nullable Class<?> targetClass) Description copied from interface:TransactionAttributeSourceReturn the transaction attribute for the given method, ornullif the method is non-transactional.- Specified by:
getTransactionAttributein interfaceTransactionAttributeSource- Parameters:
method- the method to introspecttargetClass- the target class (can benull, in which case the declaring class of the method must be used)- Returns:
- the matching transaction attribute, or
nullif none found
-
equals
-
hashCode
public int hashCode() -
toString
-