我正在尝试设置一个bootstrapcacheloader,它将查询数据库并填充缓存 . 这里我使用的是集成了spring的ehcache . 但问题是我无法将依赖关系连接到我的缓存加载器实现中 . @ Autowired,@ Resource,@ Configurable它们似乎都不起作用 . 很明显,缓存加载器实例化不是由Spring容器完成的,但有没有办法可以将一个spring创建的缓存加载器实例注入缓存管理器并引导它?我的实施细节如下 . ehcache.xml

<cache name="MyCache"
       maxElementsInMemory="100000"
       eternal="false" 
       overflowToDisk="false"
       timeToLiveSeconds="500">
      <!--  <pinning store="localMemory"/> -->
      <bootstrapCacheLoaderFactory class="net.tristargroup.claims.helper.ClaimsCacheLoaderFactory" properties="bootstrapAsynchronously=true"/>
       <cacheEventListenerFactory class="net.tristargroup.claims.helper.TristarCacheEventListenerFactory" listenFor="all"/>

</cache>

Spring Context xml

<cache:annotation-driven/>

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
    <property name="cacheManager"><ref local="ehcache"/></property>
</bean>

<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" depends-on="cacheLoader">
    <property name="configLocation" value="classpath:ehcache.xml"/>
</bean>

Cache loader class

@Configurable

public class ClaimsCacheLoaderFactory extends BootstrapCacheLoaderFactory {

@Resource
CacheManager cacheManager;
    .
    .
    .
    @Override
public BootstrapCacheLoader createBootstrapCacheLoader(Properties arg0) {
    System.out.println("Create cache loader method . Cache manager is ->"+cacheManager);
    BootstrapCacheLoader cacheLoader = new ClaimsCacheLoader();
    return cacheLoader;
}

即使我将cacheManager实例指定为Autowired属性,cacheManager实例也始终为null . 即使在缓存事件侦听器中也存在该问题 . 有人请帮帮我 .