Spring Boot, Spring-Kafka, and Spring-Cloud compatibility - spring-cloud

My question is about Spring-Kafka and Spring Cloud compatibility.
I am using the following versions:
Kafka Broker 1.0.2
Spring Boot 1.5.2
Spring Kafka 1.2.2
Spring Cloud Stream Chelsea.SR2 (Spring Cloud Stream
Core 1.2.2.RELEASE)
The compatibility between Spring-Kafka and Spring Boot was asked in a different SO question a few days ago. The Spring-Kafka project page was updated with more details about the compatibility. The project site states the following:
All users with brokers >= 0.10.x.x (and all spring boot 1.5.x users) are recommended to use spring-kafka version 1.3.x
The compatibility matrix for Spring Cloud Stream and Spring-Kafka states that:
Spring Cloud Stream 1.2.x is compatible with Spring-Kafka 1.2.x, 1.1.x.
The Spring-Kafka project page recommends me to upgrade to 1.3.X, but my version of Spring Cloud Stream is no compatible with Spring-Kafka 1.3.X.
I would prefer to upgrade my Spring-Kafka version to 1.3.8. But I do not want to break Spring Cloud Stream.
Does anyone have experience with using a newer version of Spring-Kafka with an older version of Spring Cloud Stream?

Spring Boot 1.5.2 is extremely old (early 2017). The current Boot 1.5.x version is 1.5.18 (released today).
If you start a new Spring Boot 1.5 project using Initializr You get
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.18.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.SR5</spring-cloud.version>
<spring-kafka.version>1.3.8.RELEASE</spring-kafka.version>
</properties>
Edgware.SR5 pulls in the Ditmars Spring Cloud Stream release train (1.3.3) and, as you can see, spring-kafka 1.3.8 is used too.
So I would recommend you upgrade everything to get current.

Related

spring-data-aerospike compatibility matrix

Hi looking for guidance on a version of spring-data-aerospike for Springboot 2.4.2. I don't see it listed here
There wasn't a specific spring-data-aerospike version that used Spring Boot 2.4.2.
spring-data-aerospike 2.4.2.RELEASE used Spring Boot 2.3.5.RELEASE.
spring-data-aerospike 2.5.0/3.0.0 used Spring Boot 2.5.1.
spring-data-aerospike 3.0.1 is using Spring Boot 2.5.3.
Using the latest spring-data-aerospike is recommended, if you can I would consider an upgrade, if its not an option - I would suggest using the latest version possible that works with your current version of Spring Boot (probably 2.4.2.RELEASE).

Mybatis and Spring Boot 2.5

Will Mybatis support Spring Boot 2.5? Currently Mybatis Framework is shown as an unsupported Dependency on the Spring initializer Site for Spring Boot 2.5.0 M1 release.
Yes, it will once it reaches GA.
'M1' means it still is a milestone release.
See this answer for the details.
Even 2.5.0 GA can not choose Mybatis Framework In Initializr,
but I hear it is preparing now.
Besides, I can still use it by adding mybatis-spring-boot-starter to dependencies.

Spring boot 1.5.9 will support which version of spring boot admin?

Currently, we are using spring boot 1.5.9 with eureka .Can anyone tell me know which version of spring boot admin I should use?
Use the latest from Spring Boot Admin 1.5.x branch, which is currently 1.5.7

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
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

How to configure maven to use latest or predefined Spring version / hibernate Version

I am new to Maven and I use STS Eclipse to build spring-maven application. My problem is when I create new spring project by default it adds spring 3.1 and servlet 2.4 version to pom file but I want to add spring 4.2.6 and servlet 4 version. I can edit pom manually but is there any way to configure the maven setting so that it uses the version I provide them.
According to the Spring Boot reference guide :
Each release of Spring Boot provides a curated list of dependencies it
supports. In practice, you do not need to provide a version for any of
these dependencies in your build configuration as Spring Boot is
managing that for you. When you upgrade Spring Boot itself, these
dependencies will be upgraded as well in a consistent way.
The only versions you need to set is the Spring Boot version itself :
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent>
and, if you use some, the versions of libraries unknown from Spring Boot.
If you want to check which version of a dependency is installed by Spring Boot look at the list in the reference guide.