JCache 的 Spymemcached 的完全限定名称

Fully qualified name of Spymemcached for JCache

我们正在尝试以一种我们可以轻松交换任何符合 JSR-107 的缓存提供程序的方式来实现 JCache。我们正在使用 Spring 并且我们的 CachingProvider Bean 看起来像这样:

@Bean
public CachingProvider cachingProvider() {
    CachingProvider cachingProvider = Caching.getCachingProvider(env.getProperty("jcache.provider.fullyQualifiedName"));
    return cachingProvider;
}

这允许我们通过在我们的属性文件中添加完全限定名称并将 jar 添加到类路径来换入和换出我们想要的任何兼容缓存。目前,为了实现 Hazelcast,我们的配置文件如下所示:

jcache.provider.fullyQualifiedName=com.hazelcast.cache.HazelcastCachingProvider

但是,我想为此实现 spymemcached,但我找不到它的完全限定名称(或任何其他符合 JSR-107 的实现)。

所以我的问题是有人知道 Spymemchaced 或任何其他符合 JSR-107 的缓存提供程序的完全限定名称吗?我在谷歌上搜索了又搜索,但还是一无所获。

如果您想通过添加不同的 jar 来切换缓存提供程序,最好的答案是:照做!您不需要为此进行任何额外配置。

您只能使用 Caching.getCachingProvider()。这将 return 您添加到应用程序中的 JSR107 兼容缓存提供程序(在 class 路径中)。内部是使用服务提供者接口机制,见:https://docs.oracle.com/javase/tutorial/sound/SPI-intro.html

如果您想在一个应用程序中同时使用不同的缓存提供程序,情况会变得更加复杂。您可以查看 jar 文件中的 spi 文件,正如 Ben 在他的评论中所建议的那样,或者,您可以通过 Caching.getCachingProviders() 迭代它们。要获得完全限定名称,请使用 getClass().getName().

打印 class 名称