2011-06-09 35 views
0

我有我用來加載緩存的bean。我從Spring注入緩存的關鍵。我只爲該屬性複製了相同的bean,並且Spring正在創建同一個bean的多個實例。無論如何,我可以使用bean的一個實例嗎?Spring配置文件有相同的bean,不同性質

<aop:config> 
    <aop:pointcut id="terminalPointcut" 
     expression="execution(* *..TerminalDao.getTerminals())" /> 
    <aop:pointcut id="miscPointcut" 
     expression="execution(* *..MiscDao.getMiscTableList(*))" /> 
    <aop:pointcut id="errorPointcut" 
     expression="execution(* *..ErrorDao.getErrorList())" /> 
    <aop:advisor id="terminalCacheLoaderAdvisor" 
     advice-ref="terminalCacheLoaderAdvice" pointcut-ref="terminalPointcut" /> 
    <aop:advisor id="miscCacheLoaderAdvisor" 
     advice-ref="miscCacheLoaderAdvice" pointcut-ref="miscPointcut" /> 
    <aop:advisor id="errorCdDetailCacheLoaderAdvisor" 
     advice-ref="errorCacheLoaderAdvice" pointcut-ref="errorPointcut" /> 
</aop:config> 

<bean id="miscCacheLoaderAdvice" class="com.temp.ehCache.interceptor.CacheLoader"> 
     <property name="cacheManager" ref="simpleCacheManager" /> 
     <property name="cache_data_key" value="MISC_DATA_KEY" /> 
</bean> 

<bean id="errorCacheLoaderAdvice" class="com.temp.ehCache.interceptor.CacheLoader"> 
     <property name="cacheManager" ref="simpleCacheManager" /> 
     <property name="cache_data_key" value="ERROR_DATA_KEY" /> 
</bean> 

回答

3
<bean id="miscCacheLoaderAdvice" class="com.temp.ehCache.interceptor.CacheLoader"> 
     <property name="cacheManager" ref="simpleCacheManager" /> 
     <property name="cache_data_key" value="MISC_DATA_KEY" /> 
</bean> 

<bean id="errorCacheLoaderAdvice" class="com.temp.ehCache.interceptor.CacheLoader"> 
     <property name="cacheManager" ref="simpleCacheManager" /> 
     <property name="cache_data_key" value="ERROR_DATA_KEY" /> 
</bean> 

你顯然需要有兩種不同的配置兩次同一個bean。因此,即使有可能將它的bean結合起來將是一個總的疼痛(你可以使用例如ThreadLocals設置屬性需要等)

我說改變設計。如果com.temp.ehCache.interceptor.CacheLoader重,試圖重的東西解壓到一個委託豆可以由CacheLoader bean可以使用。保持CacheLoader豆儘可能小,並且它不會有更多的不是圍繞一個他們的問題(只要你不按類型使用自動裝配)。

+0

感謝您的回答。 – Mahi 2011-06-09 15:25:48

相關問題