Apache Ignite异常-未能初始化缓存存储(未提供数据源)

Apache Ignite异常-未能初始化缓存存储(未提供数据源),ignite,Ignite,我正在尝试为我的ignite缓存实现持久存储,我正在使用CacheJdbcPojoStoreFactory,我的缓存存储工厂初始化如下所示 @Autowired DataSorce datasource; @Bean public CacheJdbcPojoStoreFactory<?, ?> cacheJdbcdPojoStorefactory(){ CacheJdbcPojoStoreFactory<?, ?> factory = new CacheJdbcPo

我正在尝试为我的ignite缓存实现持久存储,我正在使用CacheJdbcPojoStoreFactory,我的缓存存储工厂初始化如下所示

@Autowired
DataSorce datasource; 
@Bean  
public CacheJdbcPojoStoreFactory<?, ?> cacheJdbcdPojoStorefactory(){
CacheJdbcPojoStoreFactory<?, ?> factory = new CacheJdbcPojoStoreFactory<>();
factory.setDataSource(dataSource);
return factory;
 }
CacheConfiguration pesonConfig = new CacheConfiguration();
pesonConfig.setName("personCache");
cacheJdbcdPojoStorefactory.setTypes(jdbcTypes.toArray(new JdbcType[jdbcTypes.size()]));
Collection<QueryEntity> qryEntities = new ArrayList<>();
qryEntities.add(qryEntity);
pesonConfig.setQueryEntities(qryEntities);
pesonConfig.setCacheStoreFactory((Factory<? extends CacheStore<Integer, Person>>) cacheJdbcdPojoStorefactory);
ROCCache<Integer, Person> personCache= rocCachemanager.createCache(pesonConfig);
personCache.put(1, p1);
personCache.put(2, p2)

调试时,我可以看到数据源参数在CacheJDBCDPOjostrefactory对象中设置正确。哪里出了问题?

您可以提供其bean ID,工厂将从应用程序上下文获取它,而不是连接数据源bean并将其设置到工厂。以下是一个例子:

@Bean  
public CacheJdbcPojoStoreFactory<?, ?> cacheJdbcdPojoStorefactory(){
    CacheJdbcPojoStoreFactory<?, ?> factory = new CacheJdbcPojoStoreFactory<>();
    factory.setDataSourceBean("data-source-bean");
    return factory;
}
@Bean
公共缓存jdbcpojostoreFactory缓存jdbcpojostrefactory(){
CacheJdbcPojoStoreFactory=new CacheJdbcPojoStoreFactory();
setDataSourceBean(“数据源bean”);
返回工厂;
}

问题是工厂将被序列化,但数据源字段是暂时的。这使得
setDataSource()
属性非常混乱,我认为它应该被弃用并重新处理。

您可以提供它的bean ID,工厂将从应用程序上下文获取它,而不是将数据源bean连接并设置为工厂。以下是一个例子:

@Bean  
public CacheJdbcPojoStoreFactory<?, ?> cacheJdbcdPojoStorefactory(){
    CacheJdbcPojoStoreFactory<?, ?> factory = new CacheJdbcPojoStoreFactory<>();
    factory.setDataSourceBean("data-source-bean");
    return factory;
}
@Bean
公共缓存jdbcpojostoreFactory缓存jdbcpojostrefactory(){
CacheJdbcPojoStoreFactory=new CacheJdbcPojoStoreFactory();
setDataSourceBean(“数据源bean”);
返回工厂;
}
问题是工厂将被序列化,但数据源字段是暂时的。这使得
setDataSource()
属性非常混乱,我认为应该弃用并重新处理它