Class MethodMapTransactionAttributeSource
- java.lang.Object
- org.springframework.transaction.interceptor.MethodMapTransactionAttributeSource
- All Implemented Interfaces:
Aware
,BeanClassLoaderAware
,InitializingBean
,TransactionAttributeSource
public class MethodMapTransactionAttributeSource extends Object implements TransactionAttributeSource, BeanClassLoaderAware, InitializingBean
SimpleTransactionAttributeSource
implementation that allows attributes to be stored per method in aMap
.- Since:
- 24.04.2003
- Author:
- Rod Johnson, Juergen Hoeller
- See Also:
isMatch(java.lang.String, java.lang.String)
,NameMatchTransactionAttributeSource
Constructor Summary
Constructors Constructor Description MethodMapTransactionAttributeSource()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addTransactionalMethod(Class<?> clazz, String mappedName, TransactionAttribute attr)
Add an attribute for a transactional method.void
addTransactionalMethod(Method method, TransactionAttribute attr)
Add an attribute for a transactional method.void
addTransactionalMethod(String name, TransactionAttribute attr)
Add an attribute for a transactional method.void
afterPropertiesSet()
Eagerly initializes the specified"methodMap"
, if any.boolean
equals(Object other)
TransactionAttribute
getTransactionAttribute(Method method, Class<?> targetClass)
Return the transaction attribute for the given method, ornull
if the method is non-transactional.int
hashCode()
protected void
initMethodMap(Map<String,TransactionAttribute> methodMap)
Initialize the specified"methodMap"
, if any.protected boolean
isMatch(String methodName, String mappedName)
Return if the given method name matches the mapped name.void
setBeanClassLoader(ClassLoader beanClassLoader)
Callback that supplies the beanclass loader
to a bean instance.void
setMethodMap(Map<String,TransactionAttribute> methodMap)
Set a name/attribute map, consisting of "FQCN.method" method names (e.g.String
toString()
Constructor Detail
MethodMapTransactionAttributeSource
public MethodMapTransactionAttributeSource()
Method Detail
setMethodMap
public void setMethodMap(Map<String,TransactionAttribute> methodMap)
Set a name/attribute map, consisting of "FQCN.method" method names (e.g. "com.mycompany.mycode.MyClass.myMethod") andTransactionAttribute
instances (or Strings to be converted toTransactionAttribute
instances).Intended for configuration via setter injection, typically within a Spring bean factory. Relies on
afterPropertiesSet()
being called afterwards.- Parameters:
methodMap
- saidMap
from method name to attribute value- See Also:
TransactionAttribute
,TransactionAttributeEditor
setBeanClassLoader
public void setBeanClassLoader(ClassLoader beanClassLoader)
Description copied from interface:BeanClassLoaderAware
Callback that supplies the beanclass loader
to a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as
InitializingBean's
InitializingBean.afterPropertiesSet()
method or a custom init-method.- Specified by:
setBeanClassLoader
in interfaceBeanClassLoaderAware
- Parameters:
beanClassLoader
- the owning class loader; may benull
in which case a defaultClassLoader
must be used, for example theClassLoader
obtained viaClassUtils.getDefaultClassLoader()
afterPropertiesSet
public void afterPropertiesSet()
Eagerly initializes the specified"methodMap"
, if any.- Specified by:
afterPropertiesSet
in interfaceInitializingBean
- See Also:
initMethodMap(java.util.Map)
initMethodMap
protected void initMethodMap(Map<String,TransactionAttribute> methodMap)
Initialize the specified"methodMap"
, if any.- Parameters:
methodMap
- Map from method names toTransactionAttribute
instances- See Also:
setMethodMap(java.util.Map<java.lang.String, org.springframework.transaction.interceptor.TransactionAttribute>)
addTransactionalMethod
public void addTransactionalMethod(String name, TransactionAttribute attr)
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
public void addTransactionalMethod(Class<?> clazz, String mappedName, TransactionAttribute attr)
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
public void addTransactionalMethod(Method method, TransactionAttribute attr)
Add an attribute for a transactional method.- Parameters:
method
- the methodattr
- attribute associated with the method
isMatch
protected boolean isMatch(String methodName, String mappedName)
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
public TransactionAttribute getTransactionAttribute(Method method, Class<?> targetClass)
Description copied from interface:TransactionAttributeSource
Return the transaction attribute for the given method, ornull
if the method is non-transactional.- Specified by:
getTransactionAttribute
in interfaceTransactionAttributeSource
- Parameters:
method
- the method to introspecttargetClass
- the target class (may benull
, in which case the declaring class of the method must be used)- Returns:
- the matching transaction attribute, or
null
if none found