Fer*_*ano 5 spring autowired hazelcast spring-boot
我开始探索 Hazelcast 功能,并且一直尝试通过 HazelcastRepository 使用 MapStore 作为数据库的后写缓冲区。我的目标是在 MapStore 中使用 JpaRepository 来加载缓存和从缓存存储。
我正在使用 Spring Boot,经过一些研究后,我发现我可以使用 @SpringAware 在 MapStore 中自动装配我的存储库,但每次它到达那里时,我的 Bean 都会null
得到一个NullPointerException
. 即使经过大量不同的测试,我也无法让它工作,我无法在 MapStore 中自动装配我的 bean
启用 SpringAware 的配置有问题还是我看错地方了?
找到了这个 stackoverflow 帖子,它给了我线索,但我仍然无法弄清楚问题,因为大多数配置都是 xml 而不是 java。还发现了有关如何通过 Java 配置在 Hazelcast 中配置 SpringAware 的Github 问题
我在这个Git Repo Here中提交了我的示例代码。
小智 6
在调查了提供的代码后,我注意到根据我在 Hazelcast 上发现的 GitHub 问题,@SpringAware 在默认情况下从未启用。该问题描述了 SpringAware 被禁用,因为它影响了性能,这使我转向另一个封闭式解决方案,使用 SpringManagedContext 通过代码启用注释(避免使用 XML),但它仍然没有解决问题。
真正的解决方案在这里找到,将MapLoaderLifecycleSupport接口添加到您的 MapStore 实现中并实现 init 方法,如票证中所示:
@Override
public void init(HazelcastInstance hazelcastInstance, Properties properties, String mapName) {
hazelcastInstance.getConfig().getManagedContext().initialize(this);
}
Run Code Online (Sandbox Code Playgroud)
这将强制在 MapStore 类中启用@SpringAware ,因此能够将任何 spring 组件自动装配到该类中,如下图所示。
归档时间: |
|
查看次数: |
3219 次 |
最近记录: |