我正在尝试使用IgniteCrudRepository建立一个小的Ignite应用程序。
由于当前的稳定版本2.6.0的spring数据集成(https://issues.apache.org/jira/browse/IGNITE-6879)存在问题,因此我使用的是最新的每夜版本2.7.0。
当我尝试启动应用程序时,它失败,但出现以下异常:
org.apache.ignite.IgniteException: Failed to initialize Ignite repository factory. Ignite instance or IgniteConfiguration or a path to Ignite's spring XML configuration must be defined in the application configuration
但是在我的spring boot应用程序中,我确实创建了一个Ignite bean,并且在调试日志中,我看到spring知道该bean。
Eagerly caching bean 'ignite' to allow for resolving potential circular reference
我的spring boot应用程序类如下:
@SpringBootApplication
@EnableIgniteRepositories
@Configuration
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Bean
Ignite ignite(){
IgniteConfiguration configuration = new IgniteConfiguration();
configuration.setIgniteInstanceName("myApp");
configuration.setPeerClassLoadingEnabled(true);
CacheConfiguration<Integer, Page> cache = new CacheConfiguration<>("pageCache");
cache.setIndexedTypes(Integer.class, Page.class);
configuration.setCacheConfiguration(cache);
return Ignition.start(configuration);
}
}
回购定义如下:
import org.apache.ignite.springdata20.repository.IgniteRepository;
public interface PageRepository extends IgniteRepository<Page, Integer> {
}
然后将Ignite bean注入我的控制器中,也可以通过调试来确认。实现类型为IgniteKernal。
所以我不明白为什么无法创建存储库,因为所需的bean似乎是应用程序上下文的一部分。没有其他xml或java配置。
我知道2.7.0尚未发布,这可能是夜间构建中的错误。但是也许有人以前有此问题,或者有解决此问题的想法。
答案 0 :(得分:2)
我相信您必须将bean命名为igniteInstance
。请参阅最后一个段落here。它说您可以拥有igniteInstance
,igniteCfg
或igniteSpringCfgPath
。