Skip to content

Commit

Permalink
ISPN-6561 Spring Boot Starter demo
Browse files Browse the repository at this point in the history
  • Loading branch information
Sebastian Laskawiec committed Nov 25, 2016
1 parent e5b3eb2 commit 83a1e1a
Show file tree
Hide file tree
Showing 3 changed files with 131 additions and 0 deletions.
1 change: 1 addition & 0 deletions pom.xml
Expand Up @@ -60,6 +60,7 @@
<module>functional</module>
<module>spark</module>
<module>spring</module>
<module>spring-boot</module>
<module>tx</module>
<module>distexec</module>
<module>clusterexec</module>
Expand Down
61 changes: 61 additions & 0 deletions spring-boot/pom.xml
@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>infinispan-simple-tutorials-spring-boot</artifactId>
<parent>
<relativePath>../pom.xml</relativePath>
<version>1.0.0-SNAPSHOT</version>
<groupId>org.infinispan.tutorial.simple</groupId>
<artifactId>infinispan-simple-tutorials</artifactId>
</parent>

<name>Infinispan Simple Tutorials: Spring Boot</name>

<properties>
<spring-boot.version>1.4.0.RELEASE</spring-boot.version>
<infinispan.starters.version>1.0.0</infinispan.starters.version>
</properties>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-embedded</artifactId>
</dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-spring4-embedded</artifactId>
</dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>spring-boot-starter-infinispan</artifactId>
<version>${infinispan.starters.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
</plugin>
</plugins>
</build>
</project>
@@ -0,0 +1,69 @@
package org.infinispan.tutorial.simple.spring;

import java.lang.invoke.MethodHandles;

import org.infinispan.Cache;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.configuration.global.GlobalConfigurationBuilder;
import org.infinispan.manager.EmbeddedCacheManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;

import infinispan.autoconfigure.InfinispanCacheConfigurer;
import infinispan.autoconfigure.InfinispanGlobalConfigurer;

/**
* This example shows how to configure Spring Boot and Infinispan
*
* <p>It is recommended to use <code>-Djava.net.preferIPv4Stack=true</code> for running multiple instances</p>
*/
@SpringBootApplication
public class SpringBootApp {

private static final String CACHE_NAME = "test";
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());

/**
* This bean is optional but it shows how to inject {@link org.infinispan.configuration.global.GlobalConfiguration}.
*/
@Bean
public InfinispanGlobalConfigurer globalConfiguration() {
logger.info("Defining Global Configuration");
return () -> GlobalConfigurationBuilder
.defaultClusteredBuilder()
.globalJmxStatistics().allowDuplicateDomains(true)
.build();
}

/**
* Here we inject {@link Configuration}.
*/
@Bean
public InfinispanCacheConfigurer cacheConfigurer() {
logger.info("Defining {} configuration", CACHE_NAME);
return manager -> {
Configuration ispnConfig = new ConfigurationBuilder()
.clustering().cacheMode(CacheMode.DIST_SYNC)
.build();

manager.defineConfiguration(CACHE_NAME, ispnConfig);
};
}

public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(SpringBootApp.class, args);

EmbeddedCacheManager cacheManager = ctx.getBean(EmbeddedCacheManager.class);
Cache<Long, String> cache = cacheManager.getCache(CACHE_NAME);
cache.put(System.currentTimeMillis(), "Infinispan");

logger.info("Values from Cache: {}", cache.entrySet());
}

}

0 comments on commit 83a1e1a

Please sign in to comment.