我正在尝试设置一个bootstrapcacheloader,它将查询数据库并填充缓存。在这里,我使用与Spring集成的ehcache。但问题是我无法将依赖项连接到我的cacheloader实现中。@Autowed、@Resources、@Configurable似乎都不起作用。很明显,cacheloader实例化不是由Spring容器完成的,但有没有一种方法可以将Spring创建的cacheloader实例注入cachemanager并引导它?下面是我的实现细节。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>
缓存加载器类
@Configurable
公共类ClaimsCacheLoaderFactory扩展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实例在这里始终为空,即使我将其指定为自动连接属性。即使在缓存事件侦听器中也存在此问题。有人能帮我吗。
如果cacheManager为null,这意味着您还没有使bean对您的包可用。在定义bean的位置添加一个@ComponentScan("yourpackage "),并在希望使用cacheManager的位置添加@Component。这是旧的,但我希望它能帮助其他人。
我正在使用Spring Data JPA和Hibernate开发一个应用程序,并尝试使用EHCache启用二级缓存。我将我的应用程序分成两个项目: CoreDataFacade:在这里,我使用QueryDSL、Spring data JPA和Hibernate以及Ehcache定义了数据访问操作。 QueryComponent:是使用CoreDataFacade项目访问数据的spring启动项目。
让我澄清一下我对二级缓存的理解。在我的web应用程序的基类中有一个查询。几乎每一个操作都会调用此查询(我使用的是Struts,这就是应用程序的设计方式,因此不会真正弄乱它),例如,加载我的主页会调用三个单独的Struts操作,并为每个操作执行此查询。QueryDsl形式的查询看起来像
下面是我的ehcache配置文件 所有Spring注释和配置都正常工作 但是缓存在timetoliveseconds之后无法清除。 谁能帮我一下我的配置有什么问题吗。 下面的页面说它是错误,但不知道如何解决这个问题? 我正在使用sping-boot-starter-cache-2.0.3版本 https://github.com/ehcache/ehcache-jcache/issues/26 有
我无法让我的ehCache与磁盘存储一起工作。我想要一个持久缓存存在后,我重新启动我的应用程序。所以我尝试了ehCache,这是我的ehCache配置文件: 只要我不重新启动应用程序,缓存就会工作。在我重新启动应用程序并且ehCache试图从缓存文件加载数据之后,我得到了这个错误: 我还有一个ShutdownListener来关闭CacheManager 这是我的服务方式
roo-1.3.1.RC1. 我创建了具有适当 PK 和 FK 关系的简单 3-4 个表。我加载了数据。我使用spring-roo - reverse engg技术来生成基于JSF的UI。我有一个员工列表,它显示在默认的JSF生成的页面中,具有正确的分页。 如果员工数量在数据库中非常高,并且如果我想在应用程序启动期间加载到ehCache/hibernate二级缓存,那么我如何才能做到这一点? eh