通过Spring将Google番石榴缓存构建器注入bean

有人可以提供一个很好的片段来构建和通过Spring xml将Google番石榴的CacheBuilder注入依赖bean吗?

为了概括,我需要一些Spring中的示例来说明使用构建器模式构造对象。

虽然可以使用factory-method属性调用Spring XML中的任意方法 ,但您会发现Builder-Pattern样式链接调用几乎不可能。

相反,对于此类复杂方案,请使用FactoryBean或基于Java的容器配置 。 我担心,XML不会让你那么远。

通过在下一个Guava版本(版本12)中添加CacheBuilderSpec ,您将能够使用CacheBuilder.from(String spec)静态工厂方法在xml中创建CacheBuilder bean。

它看起来像这样:

    

您甚至可以使用Spring的PropertyPlaceholderConfigurer将配置字符串外部化为.properties文件。

在那之前,你应该使用Sean Patrick Floyd的解决方案(它还具有类型安全的优点)。

还想补充一点,如果您对不同缓存的不同缓存构建器不感兴趣,可以直接在缓存管理器中使用缓存规范。

在初始化缓存管理器时,您不需要按名称指定每个缓存,每个缓存的新请求将基于提供的CacheBuilder构建一个缓存,或者在这种情况下使用提供的缓存规范(导致相应的CacheBuilder)构建一个缓存。

你是Spring XML最终非常优雅:

    

另请注意:不要忘记通过在应用程序配置xml中包含类似的内容来告诉spring您正在使用缓存:

  

您当然需要定义:

 xmlns:cache="http://www.springframework.org/schema/cache" xsi:schemaLocation="http://www.springframework.org/schema/cache classpath:org/springframework/cache/config/spring-cache-4.2.xsd" 

如果你没有做这样简单的事情,并且你想要为不同的用例使用多个CacheBuilder,那么你可能想要创建自己的工厂类和方法。