Class MethodMapTransactionAttributeSource
java.lang.Object
org.springframework.transaction.interceptor.MethodMapTransactionAttributeSource
- All Implemented Interfaces:
Aware
,BeanClassLoaderAware
,InitializingBean
,EmbeddedValueResolverAware
,TransactionAttributeSource
public class MethodMapTransactionAttributeSource
extends Object
implements TransactionAttributeSource, EmbeddedValueResolverAware, BeanClassLoaderAware, 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
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
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
Eagerly initializes the specified"methodMap"
, if any.boolean
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
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
setEmbeddedValueResolver
(StringValueResolver resolver) Set the StringValueResolver to use for resolving embedded definition values.void
setMethodMap
(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") andTransactionAttribute
instances (or Strings to be converted toTransactionAttribute
instances).toString()
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.transaction.interceptor.TransactionAttributeSource
hasTransactionAttribute, isCandidateClass
-
Field Details
-
logger
Logger 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") 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:
-
setEmbeddedValueResolver
Description copied from interface:EmbeddedValueResolverAware
Set the StringValueResolver to use for resolving embedded definition values.- Specified by:
setEmbeddedValueResolver
in interfaceEmbeddedValueResolverAware
-
setBeanClassLoader
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
-
afterPropertiesSet
public void afterPropertiesSet()Eagerly initializes the specified"methodMap"
, if any.- Specified by:
afterPropertiesSet
in interfaceInitializingBean
- See Also:
-
initMethodMap
Initialize the specified"methodMap"
, if any.- Parameters:
methodMap
- a Map from method names toTransactionAttribute
instances- 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:
-
getTransactionAttribute
@Nullable public TransactionAttribute getTransactionAttribute(Method method, @Nullable 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 (can benull
, in which case the declaring class of the method must be used)- Returns:
- the matching transaction attribute, or
null
if none found
-
equals
-
hashCode
public int hashCode() -
toString
-