Spring配置文件有相同的bean,不同性质

问题描述:

我有我用来加载缓存的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> 

<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