Q:

Spring support for Apache Geode (spring-data-geode)

Could you please tell where to find out spring-data packages for Apache Geode? There is a spring-data-gemfire project that produces regular releases for Pivotal Gemfire. spring-data-geode is supposed to be a part of this project but I am not able to find out any information about. There is just one artifact with version 1.0.0.INCUBATING-RELEASE in Maven Central.
Thanks in advance,
Vadim

A:

Excellent question!
There is a Spring Data Geode project, and you are correct, the latest version of Spring Data Geode is 1.0.0.INCUBATING-RELEASE (as seen in Maven Central).  That particular version of SD Geode is based on Apache Geode 1.0.0-incubating, matching on version so users are clear which version of Apache Geode they get when declaring a dependency on SD Geode.
Being the Spring Data Geode project lead, I am acutely aware that Apache Geode released a 1.1.0 version at the end of February with a follow up 1.1.1 patch release in March (see Releases on the Apache Geode page).
Additionally, it has been sometime since I have cut a new release of Spring Data Geode to match the current version of Apache Geode (i.e. 1.1.1).  There are several reasons for this...

First, I am in the process of enhancing Spring Data Geode's new Annotation-based configuration model (Spring Boot style) to allow for dynamic configuration of key Annotation attributes (think port numbers used between clients and servers for instance) when using the Annotations while still preserving the strongly-typed nature of the attributes (i.e. not all Strings).  In a nutshell, I am accomplishing this with a standard convention often used in Spring, "Configurers", as well as "well-known and documented" properties rather than my previous intention (Property Placeholders and SpEL Expressions in Annotation attributes, which then would require them to be Strings, yuck).

NOTE: The beginnings of this new Annotation model in SD Geode and GemFire was described in 1 of my blogs. A subsequent follow-up blog entry specifically covered Annotation support for Geode's new Integrated Security Framework.

Second, I added support in SD Geode for Apache Geode's Lucene Integration.
Lastly, Spring Data Geode used to exist in the apache-geode branch in the Spring Data GemFire's GitHub Repository.  However, since the last SD Geode release (i.e. 1.0.0.INCUBATING-RELEASE), @Oliver Gierke (Spring Data Team Lead) has agreed to make Spring Data Geode a top-level Spring Data project, like Spring Data GemFire, and so, Spring Data Geode will join the Spring Data Release Train, hopefully in the next Spring Data Kay Milestone 4 (M4) release.  However, this depends entirely on the upcoming Apache Geode 1.2.0 release being released, first.  As you can see, there is already a dedicated GitHub Repository specifically for the Spring Data Geode project now.

NOTE: While all my doc references here have been to Spring Data GemFire, they equally apply to Spring Data Geode, especially as of the Spring Data GemFire 2.0.0 Milestone releases (SD Kay) since SD GemFire is based on Pivotal GemFire 9.x, which is based on Apache Geode 1.0.0-incubating.

This means several things...
First, and most importantly, Spring Data Geode will have its own spring.io project page (under Spring Data) and its own documentation, separate from Spring Data GemFire, identifying it as separate/individual and proper Spring Data project.
Second, there are many things changing in Spring Data... alignment with Java 8, core Spring Framework 5 for Reactive/Functional architectures and significant changes in Spring Data itself.  See the "core themes" in SD Kay for more details. As such, Spring Data Geode based on Apache Geode 1.2.0 will be at version 2.0.0 (unlike Apache Geode), therefore, the version numbers between Spring Data Geode and Apache Geode going forward will no longer align.
However, on positive note, once in place, Spring Data Geode will move at a predictable release cadence along with the rest of the Spring Data modules, including Spring Data GemFire.  This means there will be a transition period to get all the bits in order though, and hence this seemingly gap in Spring support for the latest version of Apache Geode (i.e. 1.1.1).
Having said that, I am still planning to release 1 more individual Spring Data Geode release (i.e. 1.1.1.RELEASE) based Apache Geode 1.1.1, hopefully soon.
In the interim, you can use the Spring Data Geode 1.0.0.INCUBATING-RELEASE with the latest version of Apache Geode (i.e. 1.1.1) without incident by simply including the SD Geode 1.0.0.INCUBATING-RELEASE dependency and declaring a direct dependency on Apache Geode 1.1.1, which will override the version of Apache Geode pulled in by SD Geode, in your application POM file like so...
<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-geode</artifactId>
  <version>1.0.0.INCUBATING-RELEASE</version>
</dependency>
<dependency>
  <groupId>org.apache.geode</groupId>
  <artifactId>geode-core</artifactId>
  <version>1.1.1</version>
</dependency>
<!-- along with any other geode dependencies you need -->

Anyway, hope this helps and I am sorry about the delay; juggling many priorities at the moment.
Cheers,
John

