Hi,
I have some business data access and service objects accessing several databases.
These objects are "transactionned" using Spring (TransactionInterceptor, BeanNameAutoProxyCreator).
I want to cache the results of one method of one of the DAO.
How can I do that ?
Here's a summary of my application context :
ThanksCode:<?xml version="1.0" encoding="windows-1252"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>/prestation.properties</value> </property> </bean> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename"> <value>messages</value> </property> </bean> <!-- Datasource & Transaction --> <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean"/> <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="userTransaction"> <ref local="jotm"/> </property> </bean> <bean id="dossier.dataSource" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> <property name="transactionManager"> <ref local="jotm"/> </property> <property name="driverName"> <value>${dossier.driverClassName}</value> </property> <property name="url"> <value>${dossier.url}</value> </property> <property name="user"> <value>${dossier.username}</value> </property> <property name="password"> <value>${dossier.password}</value> </property> </bean> <bean id="prestation.dataSource" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> ... </bean> <bean id="personnel.dataSource" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> ... </bean> <bean id="propagationRequiredAttribute" class="org.springframework.transaction.interceptor.DefaultTransactionAttribute"> <property name="propagationBehaviorName"> <value>PROPAGATION_REQUIRED</value> </property> </bean> <bean id="propagationReadOnlyAttribute" class="org.springframework.transaction.interceptor.DefaultTransactionAttribute"> <property name="propagationBehaviorName"> <value>PROPAGATION_REQUIRED,readOnly</value> </property> </bean> <bean id="nameTransactionAttributeSource" class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource"> <property name="nameMap"> <map> <entry key="ajouter*"> <ref local="propagationRequiredAttribute"/> </entry> <entry key="cloturer*"> <ref local="propagationRequiredAttribute"/> </entry> <entry key="modifier*"> <ref local="propagationRequiredAttribute"/> </entry> <entry key="*"> <ref local="propagationReadOnlyAttribute"/> </entry> </map> </property> </bean> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager"> <ref local="transactionManager"/> </property> <property name="transactionAttributeSource"> <ref local="nameTransactionAttributeSource"/> </property> </bean> <!-- Proxy --> <bean id="auto" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="interceptorNames"> <list> <idref local="transactionInterceptor"/> </list> </property> <property name="beanNames"> <list> <idref local="dossierOAD"/> <idref local="dossierService"/> ... </list> </property> </bean> <!-- Business Object --> <bean id="dossierOAD" class="com.greisch.gestion.prestation.oad.JDBCDossier"> <property name="dataSource"> <ref local="dossier.dataSource"/> </property> </bean> <bean id="dossierService" class="com.greisch.gestion.prestation.DossierServiceImpl"> <property name="dossierOAD"> <ref local="dossierOAD"/> </property> </bean> ... </beans>



