【发布时间】:2016-07-18 05:47:55
【问题描述】:
我是 spring-boot 和 hazelcast 的新手。我有一个带有服务层的 spring-boot 应用程序,它应该使用 hazelcast imap。我遇到的问题是我不知道如何获取将数据存储到仅具有 java 配置的 spring 组件的 mapstore。添加组件注释还不够,我的自动装配存储库为空。
@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并且存储库没有初始化。
在我的存储库加载后,是否有可能让 mapstore 作为 spring 组件运行,甚至强制 hazelcast 初始化? 感谢您的帮助。
【问题讨论】:
-
我有一个解决方案,但我对它不是很满意。我在 Hazelcast 配置中初始化了地图存储,并将存储库添加为构造函数 arg。这可行,但商店甚至不是真正的弹簧组件。
mapStoreConfig.setImplementation(new MyMapStore(this.repository));如果有人能帮助我提供更好的解决方案,那就太好了。
标签: java spring spring-boot hazelcast hazelcast-imap