|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.aop.framework.ProxyConfig org.springframework.aop.framework.AbstractSingletonProxyFactoryBean org.springframework.transaction.interceptor.TransactionProxyFactoryBean
public class TransactionProxyFactoryBean
Proxy factory bean for simplified declarative transaction handling.
This is a convenient alternative to a standard AOP
ProxyFactoryBean
with a separate TransactionInterceptor
definition.
HISTORICAL NOTE: This class was originally designed to cover the
typical case of declarative transaction demarcation: namely, wrapping a singleton
target object with a transactional proxy, proxying all the interfaces that the target
implements. However, in Spring versions 2.0 and beyond, the functionality provided here
is superseded by the more convenient tx:
XML namespace. See the declarative transaction management section of the
Spring reference documentation to understand the modern options for managing
transactions in Spring applications. For these reasons, users should favor of
the tx:
XML namespace as well as
the @Transactional
and @EnableTransactionManagement
annotations.
There are three main properties that need to be specified:
PlatformTransactionManager
implementation to use
(for example, a JtaTransactionManager
instance)
If the "transactionManager" property is not set explicitly and this FactoryBean
is running in a ListableBeanFactory
, a single matching bean of type
PlatformTransactionManager
will be fetched from the BeanFactory
.
In contrast to TransactionInterceptor
, the transaction attributes are
specified as properties, with method names as keys and transaction attribute
descriptors as values. Method names are always applied to the target class.
Internally, a TransactionInterceptor
instance is used, but the user of this
class does not have to care. Optionally, a method pointcut can be specified
to cause conditional invocation of the underlying TransactionInterceptor
.
The "preInterceptors" and "postInterceptors" properties can be set to add
additional interceptors to the mix, like
PerformanceMonitorInterceptor
or
HibernateInterceptor
/
JdoInterceptor
.
HINT: This class is often used with parent / child bean definitions. Typically, you will define the transaction manager and default transaction attributes (for method name patterns) in an abstract parent bean definition, deriving concrete child bean definitions for specific target objects. This reduces the per-bean definition effort to a minimum.
<bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean id="myProxy" parent="baseTransactionProxy">
<property name="target" ref="myTarget"/>
</bean>
<bean id="yourProxy" parent="baseTransactionProxy">
<property name="target" ref="yourTarget"/>
</bean>
setTransactionManager(org.springframework.transaction.PlatformTransactionManager)
,
AbstractSingletonProxyFactoryBean.setTarget(java.lang.Object)
,
setTransactionAttributes(java.util.Properties)
,
TransactionInterceptor
,
ProxyFactoryBean
,
Serialized FormConstructor Summary | |
---|---|
TransactionProxyFactoryBean()
|
Method Summary | |
---|---|
protected Object |
createMainInterceptor()
Creates an advisor for this FactoryBean's TransactionInterceptor. |
void |
setBeanFactory(BeanFactory beanFactory)
This callback is optional: If running in a BeanFactory and no transaction manager has been set explicitly, a single matching bean of type PlatformTransactionManager will be fetched from the BeanFactory. |
void |
setPointcut(Pointcut pointcut)
Set a pointcut, i.e a bean that can cause conditional invocation of the TransactionInterceptor depending on method and attributes passed. |
void |
setTransactionAttributes(Properties transactionAttributes)
Set properties with method names as keys and transaction attribute descriptors (parsed via TransactionAttributeEditor) as values: e.g. |
void |
setTransactionAttributeSource(TransactionAttributeSource transactionAttributeSource)
Set the transaction attribute source which is used to find transaction attributes. |
void |
setTransactionManager(PlatformTransactionManager transactionManager)
Set the transaction manager. |
Methods inherited from class org.springframework.aop.framework.AbstractSingletonProxyFactoryBean |
---|
afterPropertiesSet, createTargetSource, getObject, getObjectType, isSingleton, setAdvisorAdapterRegistry, setBeanClassLoader, setPostInterceptors, setPreInterceptors, setProxyClassLoader, setProxyInterfaces, setTarget |
Methods inherited from class org.springframework.aop.framework.ProxyConfig |
---|
copyFrom, isExposeProxy, isFrozen, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setFrozen, setOpaque, setOptimize, setProxyTargetClass, toString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public TransactionProxyFactoryBean()
Method Detail |
---|
public void setTransactionManager(PlatformTransactionManager transactionManager)
TransactionAspectSupport.setTransactionManager(org.springframework.transaction.PlatformTransactionManager)
public void setTransactionAttributes(Properties transactionAttributes)
Note: Method names are always applied to the target class, no matter if defined in an interface or the class itself.
Internally, a NameMatchTransactionAttributeSource will be created from the given properties.
setTransactionAttributeSource(org.springframework.transaction.interceptor.TransactionAttributeSource)
,
TransactionAspectSupport.setTransactionAttributes(java.util.Properties)
,
TransactionAttributeEditor
,
NameMatchTransactionAttributeSource
public void setTransactionAttributeSource(TransactionAttributeSource transactionAttributeSource)
setTransactionAttributes(java.util.Properties)
,
TransactionAspectSupport.setTransactionAttributeSource(org.springframework.transaction.interceptor.TransactionAttributeSource)
,
TransactionAttributeSourceEditor
,
MethodMapTransactionAttributeSource
,
NameMatchTransactionAttributeSource
,
AnnotationTransactionAttributeSource
public void setPointcut(Pointcut pointcut)
AbstractSingletonProxyFactoryBean.setPreInterceptors(java.lang.Object[])
,
AbstractSingletonProxyFactoryBean.setPostInterceptors(java.lang.Object[])
public void setBeanFactory(BeanFactory beanFactory)
PlatformTransactionManager
will be fetched from the BeanFactory.
setBeanFactory
in interface BeanFactoryAware
beanFactory
- owning BeanFactory (never null
).
The bean can immediately call methods on the factory.BeanFactory.getBean(Class)
,
PlatformTransactionManager
protected Object createMainInterceptor()
createMainInterceptor
in class AbstractSingletonProxyFactoryBean
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |