diff --git a/pom.xml b/pom.xml
index c7028710..5b4982f5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -60,6 +60,7 @@
functional
spark
spring
+ spring-boot
tx
distexec
clusterexec
diff --git a/spring-boot/README.md b/spring-boot/README.md
new file mode 100644
index 00000000..1efe3fe6
--- /dev/null
+++ b/spring-boot/README.md
@@ -0,0 +1,3 @@
+### Instructions
+
+Just invoke `mvn install spring-boot:run`
diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml
new file mode 100644
index 00000000..cb72bd45
--- /dev/null
+++ b/spring-boot/pom.xml
@@ -0,0 +1,53 @@
+
+
+ 4.0.0
+ infinispan-simple-tutorials-spring-boot
+
+ ../pom.xml
+ 1.0.0-SNAPSHOT
+ org.infinispan.tutorial.simple
+ infinispan-simple-tutorials
+
+
+ Infinispan Simple Tutorials: Spring Boot
+
+
+ 1.4.0.RELEASE
+ 1.0.0.Alpha1
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ ${spring-boot.version}
+ pom
+ import
+
+
+
+
+
+
+ org.infinispan
+ inifinispan-spring-boot-starter
+ ${infinispan.starters.version}
+
+
+ org.infinispan
+ infinispan-core
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot.version}
+
+
+
+
diff --git a/spring-boot/src/main/java/org/infinispan/tutorial/simple/spring/SpringBootApp.java b/spring-boot/src/main/java/org/infinispan/tutorial/simple/spring/SpringBootApp.java
new file mode 100644
index 00000000..08f86b03
--- /dev/null
+++ b/spring-boot/src/main/java/org/infinispan/tutorial/simple/spring/SpringBootApp.java
@@ -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.embedded.InfinispanCacheConfigurer;
+import infinispan.autoconfigure.embedded.InfinispanGlobalConfigurer;
+
+/**
+ * This example shows how to configure Spring Boot and Infinispan
+ *
+ *
It is recommended to use -Djava.net.preferIPv4Stack=true
for running multiple instances
+ */
+@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 cache = cacheManager.getCache(CACHE_NAME);
+ cache.put(System.currentTimeMillis(), "Infinispan");
+
+ logger.info("Values from Cache: {}", cache.entrySet());
+ }
+
+}