Java 具有相同bean和不同属性的Spring配置文件
我有一个用来加载缓存的bean。我给出了Spring注入的缓存密钥。我正在为属性复制同一个bean,Spring正在创建同一bean的多个实例。我是否可以使用bean的一个实例Java 具有相同bean和不同属性的Spring配置文件,java,spring,spring-aop,Java,Spring,Spring Aop,我有一个用来加载缓存的bean。我给出了Spring注入的缓存密钥。我正在为属性复制同一个bean,Spring正在创建同一bean的多个实例。我是否可以使用bean的一个实例 <aop:config> <aop:pointcut id="terminalPointcut" expression="execution(* *..TerminalDao.getTerminals())" /> <aop:pointcut id="misc
<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根据需要设置属性等)
<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>
我想改变你的设计。如果com.temp.ehCache.interceptor.CacheLoader
很重,请尝试将很重的内容提取到可由CacheLoader
bean使用的代理bean。保持CacheLoader
bean尽可能小,这样多个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根据需要设置属性等)
<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>
我想改变你的设计。如果com.temp.ehCache.interceptor.CacheLoader
很重,请尝试将很重的内容提取到可由CacheLoader
bean使用的代理bean。保持CacheLoader
bean尽可能小,这样多个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>