我是 spring-boot 和 hazelcast 的新手。我有一个带有服务层的 spring-boot 应用程序,它应该使用 hazelcast imap。我遇到的问题是我不知道如何获取将数据存储到仅具有java配置的spring组件的mapstore。添加组件注释是不够的,我的 Autowiring 存储库为空。
@Component
public class MyMapStore extends implements MapStore<Long, MyClass>, MapLoaderLifecycleSupport{
@Autowired
private MyRepository repository;
...
}
我编写了一个静态 ContextAccessor 来手动加载我的 bean,但这仅在 IDE 环境中有效,如果我将应用程序作为 jar 启动则无效
@Component
public class MyMapStore extends implements MapStore<Long, MyClass>, MapLoaderLifecycleSupport{
private MyRepository repository = StaticContextAccessor.getBean(MyRepository.class);
...
}
这里的问题是,并非所有 bean 都已加载 bean,并且存储库未初始化。
是否有可能让 map 存储作为 spring 组件运行,甚至在我的存储库加载后强制 hazelcast 进行初始化? 感谢您的帮助。
最佳答案
您可以在 Spring 中连接并实例化您的 MapStore,然后在为 Hazelcast 准备 Config(包括 MapConfig)时使用 mapStoreConfig.setImplementation(yourSpringMapStore)
方法。
然后,您可以手动启动 Hazelcast 或使用工厂方法在 Spring 中启动。
关于java - Hazelcast MapStore 作为 Spring 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38429366/