Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ISPN-6561 Spring Boot Starter demo #19

Merged
merged 1 commit into from Dec 19, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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
3 changes: 3 additions & 0 deletions spring-boot/README.md
@@ -0,0 +1,3 @@
### Instructions

Just invoke `mvn install spring-boot:run`
53 changes: 53 additions & 0 deletions spring-boot/pom.xml
@@ -0,0 +1,53 @@
<?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.Alpha1</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>inifinispan-spring-boot-starter</artifactId>
<version>${infinispan.starters.version}</version>
</dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-core</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.embedded.InfinispanCacheConfigurer;
import infinispan.autoconfigure.embedded.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());
}

}