Infinispan Embedded Server for Spring Boot.
Open Source In Memory Data Grid.
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".
- Hot Rod
- Memcached
- Rest
- WebSocket
$ git clone https://github.com/kazuhira-r/infinispan-embedded-server-spring-boot.git
$ cd infinispan-embedded-server-spring-boot
$ mvn install -DskipTests=true
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.littlewings</groupId>
<artifactId>infinispan-embedded-server-spring-boot-dependencies</artifactId>
<version>${infinispan.embedded.server.spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
add dependency.
<dependency>
<groupId>org.littlewings</groupId>
<artifactId>infinispan-embedded-server-spring-boot-starter-hotrod</artifactId>
</dependency>
add @EnableInfinispanEmbeddedHotRodServer
annotation.
import org.littlewings.infinispan.embedded.server.hotrod.EnableInfinispanEmbeddedHotRodServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableInfinispanEmbeddedHotRodServer
@SpringBootApplication
public class App {
public static void main(String... args) {
SpringApplication.run(App.class, args);
}
}
application.properties
infinispan.embedded.server.hotrod.default-cache-name=
infinispan.embedded.server.hotrod.port=
...
add dependency.
<dependencies>
<dependency>
<groupId>org.littlewings</groupId>
<artifactId>infinispan-embedded-server-spring-boot-starter-memcached</artifactId>
</dependency>
</dependencies>
add @EnableInfinispanEmbeddedMemcachedServer
annotation.
import org.littlewings.infinispan.embedded.server.memcached.EnableInfinispanEmbeddedMemcachedServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableInfinispanEmbeddedMemcachedServer
@SpringBootApplication
public class App {
public static void main(String... args) {
SpringApplication.run(App.class, args);
}
}
application.properties
infinispan.embedded.server.memcached.default-cache-name=
infinispan.embedded.server.memcached.port=
...
add dependency.
<dependency>
<groupId>org.littlewings</groupId>
<artifactId>infinispan-embedded-server-spring-boot-starter-rest</artifactId>
</dependency>
add @EnableInfinispanEmbeddedRestServer
annotation.
import org.littlewings.infinispan.embedded.server.rest.EnableInfinispanEmbeddedRestServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableInfinispanEmbeddedRestServer
@SpringBootApplication
public class App {
public static void main(String... args) {
SpringApplication.run(App.class, args);
}
}
infinispan.embedded.server.rest.cache-names=
infinispan.embedded.server.rest.port=
...
add dependency.
add @EnableInfinispanEmbeddedHotRodServer
, @EnableInfinispanEmbeddedMemcachedServer
, @EnableInfinispanEmbeddedRestServer
annotations.
and provide your EmbeddedCacheManager Bean.
import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.manager.EmbeddedCacheManager;
import org.littlewings.infinispan.embedded.server.hotrod.EnableInfinispanEmbeddedHotRodServer;
import org.littlewings.infinispan.embedded.server.hotrod.InfinispanEmbeddedHotRodServerProperties;
import org.littlewings.infinispan.embedded.server.memcached.EnableInfinispanEmbeddedMemcachedServer;
import org.littlewings.infinispan.embedded.server.memcached.InfinispanEmbeddedMemcachedServerProperties;
import org.littlewings.infinispan.embedded.server.rest.EnableInfinispanEmbeddedRestServer;
import org.littlewings.infinispan.embedded.server.rest.InfinispanEmbeddedRestServerProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@EnableInfinispanEmbeddedHotRodServer
@EnableInfinispanEmbeddedMemcachedServer
@EnableInfinispanEmbeddedRestServer
@SpringBootApplication
public class App {
public static void main(String... args) {
SpringApplication.run(App.class, args);
}
@Bean
public EmbeddedCacheManager embeddedCacheManager(InfinispanEmbeddedHotRodServerProperties hotRodServerProperties,
InfinispanEmbeddedMemcachedServerProperties memcachedServerProperties,
InfinispanEmbeddedRestServerProperties restServerProperties) {
EmbeddedCacheManager cacheManager = new DefaultCacheManager(new ConfigurationBuilder().build());
Set<String> cacheNames =
Arrays
.asList(hotRodServerProperties.getCacheNames(),
memcachedServerProperties.getCacheNames(),
restServerProperties.getCacheNames())
.stream()
.filter(c -> c != null)
.flatMap(c -> c.stream())
.collect(Collectors.toSet());
cacheNames.forEach(cacheName -> cacheManager.defineConfiguration(cacheName, new ConfigurationBuilder().build()));
return cacheManager;
}
}
see, HotRod, Memcached, Rest