Women in Technology

Hear us Roar



Article:
  An Introduction to Aspect-Oriented Programming with the Spring Framework, Part 1
Subject:   Injecting both Transactions & MethodAdvices
Date:   2005-08-08 18:11:37
From:   EtiKatta
Response to: The diagrams are wrong?

Hi,
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.

Full Threads Oldest First

Showing messages 1 through 3 of 3.

  • 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>