From 83a1e1a84a43057b4a8a6337ed026aa971f0ca0b Mon Sep 17 00:00:00 2001 From: Sebastian Laskawiec Date: Fri, 25 Nov 2016 12:12:25 +0100 Subject: [PATCH] ISPN-6561 Spring Boot Starter demo --- pom.xml | 1 + spring-boot/pom.xml | 61 ++++++++++++++++ .../tutorial/simple/spring/SpringBootApp.java | 69 +++++++++++++++++++ 3 files changed, 131 insertions(+) create mode 100644 spring-boot/pom.xml create mode 100644 spring-boot/src/main/java/org/infinispan/tutorial/simple/spring/SpringBootApp.java 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/pom.xml b/spring-boot/pom.xml new file mode 100644 index 00000000..63291a1d --- /dev/null +++ b/spring-boot/pom.xml @@ -0,0 +1,61 @@ + + + 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 + + + + + + org.springframework.boot + spring-boot-starter-parent + ${spring-boot.version} + pom + import + + + + + + + org.infinispan + infinispan-embedded + + + org.infinispan + infinispan-spring4-embedded + + + org.infinispan + spring-boot-starter-infinispan + ${infinispan.starters.version} + + + org.springframework.boot + spring-boot-starter + + + + + + + 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..07475b0e --- /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.InfinispanCacheConfigurer; +import infinispan.autoconfigure.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()); + } + +}