Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有相同bean和不同属性的Spring配置文件_Java_Spring_Spring Aop - Fatal编程技术网

Java 具有相同bean和不同属性的Spring配置文件

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

我有一个用来加载缓存的bean。我给出了Spring注入的缓存密钥。我正在为属性复制同一个bean,Spring正在创建同一bean的多个实例。我是否可以使用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根据需要设置属性等)

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