如何配置 JBOSS Infinispan 以使用休眠级别 2 缓存。我正在使用 Spring 启动应用程序,并且使用了 Spring Data JPA,它已配置为使用 Hibernate。我的应用程序没有任何类型的 xml 文件。我是这个缓存的新手。因此,请为此提供详细的解决方案。
首先,将依赖项添加到您的pom.xml:
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-spring4-embedded</artifactId>
</dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-jcache</artifactId>
</dependency>
然后将此文件(infinispan.xml)放在您的资源文件夹中:
<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns="urn:infinispan:config:7.2">
<cache-container default-cache="default">
<local-cache name="countries" statistics="true">
<eviction max-entries="200"/>
<expiration lifespan="600000"/>
</local-cache>
</cache-container>
</infinispan>
将文件(应用程序.属性)也添加到资源文件夹中:
spring.cache.infinispan.config=infinispan.xml
然后,将缓存添加到所需的位置,例如:
@Component
@CacheConfig(cacheNames = "countries")
public class CountryRepository {
@Cacheable
public Country findByCode(String code) {
System.out.println("---> Loading country with code '" + code + "'");
return new Country(code);
}
}
不要忘记在主类中启用缓存:
@EnableCaching
@SpringBootApplication
public class MySpringBootApplication {
public static void main(String[] args) {
}
}
Infinispan还有一个弹簧启动器,如果你愿意,你可以尝试一下。
<dependencies>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>inifinispan-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
使用启动器,您只需要在应用程序上下文.xml中设置 Spring 缓存 ()。创建类 SpringEmbeddedCacheManagerFactoryBean 的 bean。然后,您可以使用@Cacheable注释所需的类。
此处的示例:https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-cache
1)确保hibernate-infinispan
(具有传递依赖关系)位于类路径上
2) 设置
hibernate.cache.use_second_level_cache = true
hibernate.cache.region.factory_class = org.hibernate.cache.infinispan.InfinispanRegionFactory
hibernate.cache.default_cache_concurrency_strategy = TRANSACTIONAL
javax.persistence.sharedCache.mode = ALL
您可能还需要设置hibernate.transaction.jta.platform
并hibernate.transaction.coordinator_class
如果 Spring 没有自动为您执行此操作。