| Article: |
An Introduction to Aspect-Oriented Programming with the Spring Framework, Part 1 | |
| Subject: | The diagrams are wrong? | |
| Date: | 2004-08-19 21:24:37 | |
| From: | russellmiles | |
|
Response to: The diagrams are wrong?
|
||
|
Hi Patrick,
|
||
Showing messages 1 through 5 of 5.
-
Injecting both Transactions & MethodAdvices
2005-08-08 18:11:37 EtiKatta [View]
-
Injecting both Transactions & MethodAdvices
2007-01-04 14:46:19 kcav8or [View]
Did you ever find a solution to this? I have the same requirement. -
Injecting both Transactions & MethodAdvices
2007-01-04 15:19:46 kcav8or [View]
I answered my own question after a search of the Spring Support Forums. I added the LoggingThrowsAdvice as a preInterceptor on the TransactionProxyFactoryBean as follows:
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"> <ref local="sessionFactory" /> </property>
</bean>
<bean id="loggingThrowsAdvice" class="com.myapp.aop.LoggingThrowsAdvice">
</bean>
<bean id="txProxyTemplate" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
<property name="preInterceptors">
<list>
<ref local="loggingThrowsAdvice" />
</list>
</property>
</bean>
-
Injecting both Transactions & MethodAdvices
2007-01-04 15:12:52 kcav8or [View]
I answered my own question after a search of the Spring Support Forums. I added the LoggingThrowsAdvice as a preInterceptor on the TransactionProxyFactoryBean as follows:
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"> <ref local="sessionFactory" /> </property>
</bean>
<bean id="loggingThrowsAdvice" class="com.myapp.aop.LoggingThrowsAdvice">
</bean>
<bean id="txProxyTemplate" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
<property name="preInterceptors">
<list>
<ref local="loggingThrowsAdvice" />
</list>
</property>
</bean>
-
The diagrams are wrong?
2004-08-20 08:48:13 patrickchaumette [View]
Hello Russ,
thank you for your fast answer!
Pfeww... You got me really confused :-)
Still...
I have no problems with the concepts, maybe a precision on that point(..I was really aiming at getting the AOP principles across without getting too detailed on how Spring achieves this..) would have helped to clarify the diagrams, because the article states in another direction ..., we focus on just the AO facilities provided by Spring. and ...This article will show you how to use the following AOP concepts as they are implemented in the Spring framework....
Sure conceptually before() is executed before foo() is called, but in order to understand it one has to say on which objects.
I can't get warm with those UML sequence diagrams (or aren't they meant to be?), either they should really show only the concept of AOP unrelated to a specific technology (e.g. it shows AppContext.getBean(), this is specific here in Spring and doesn't directly relate to AOP) or they should show what really happens when you use AOP and Spring (e.g. adding the missing Proxy and all would be clear
MainApp->getBean("bl")->IBusinessLogic.foo()->Proxy.foo()->before()->BusinessLogic.foo()->afterReturning()).
Anyway, thanks again for the clarifications,
I am curious about the Part 2 of your series.
Greetings,
Patrick



Great work by you people. I have a simple question.
We have given instructions on how to configure for Transactionality by using TransactionProxyFactoryBean and also we have given instructions on how to configure ProxyFactoryBean for Advices.
My requirement is to apply both of these to the same UserManagerDelegate class and if I do them separate (as separate beans in .xml file), then I am only looking up for one bean ctx.getBean("UserManager"); and this only applies one of the above 2 configurations. If I use it for Transactions, it doesn't work for other 'before' and 'after' method advices. If I use this for 'before'&'after' method advices, then it doesn't work for Transactions.
How can I configure my UserManager (interface) and UserManagerImpl (implementation) to take care of both (a) Transactionality and (b) before&after method advices.
Please help.
Thank you very much.