Spring Boot Hazelcast MapStore无法使用Autowire Repository
作者:互联网
我开始探索Hazelcast功能,我一直在尝试通过HazelcastRepository使用MapStore作为我的数据库的Write-Behind缓冲区.我的目标是在MapStore中使用JpaRepository来加载和存储缓存.
我正在使用Spring Boot并且在做了一些研究之后我发现我可以使用@SpringAware在MapStore中自动装载我的存储库,但是每次它到达那里我的Bean都是null并且我得到一个NullPointerException.
即使经过许多不同的测试我也无法在MapStore中自动装配我的bean
这个配置有什么问题可以启用SpringAware,还是我在找错了地方?
找到This stackoverflow post,它给了我线索,但我仍然无法弄清楚问题,因为大多数配置是xml而不是java.
也
在Github Issue中发现了如何通过Java配置在Hazelcast中配置SpringAware
我在Git Repo Here中提交了我的示例代码.
解决方法:
在调查了所提供的代码之后,我注意到默认情况下@SpringAware从未根据我在Hazelcast上发现的GitHub问题启用.该问题描述了SpringAware被禁用,因为它影响了性能,这使我转向另一个关闭的票证,解决了使用SpringManagedContext(避免使用XML)通过代码启用注释,但它仍然没有解决问题.
找到真正的解决方案here,将MapLoaderLifecycleSupport接口添加到MapStore实现并实现如方法中所示的init方法:
@Override
public void init(HazelcastInstance hazelcastInstance, Properties properties, String mapName) {
hazelcastInstance.getConfig().getManagedContext().initialize(this);
}
这将强制在MapStore类中启用@SpringAware,因此,能够将任何弹簧组件自动装配到类中,如下图所示.
working-jpa-repository-map-store-screenshot
标签:spring,autowired,spring-boot-2,hazelcast 来源: https://codeday.me/bug/20190627/1303736.html