Start version 6.5
* Upgrade dependencies to latest reasonable * Add `6.4.x` branch to Dependabot config * Move `whats-new.adoc` content to `changes-6.3-6.4.adoc` * Optimize `build.gradle` moving `add-opens` for `java.base/java.util` to common config block
This commit is contained in:
58
.github/dependabot.yml
vendored
58
.github/dependabot.yml
vendored
@@ -45,6 +45,52 @@ updates:
|
||||
- com.thoughtworks.xstream:xstream
|
||||
- org.springframework.security*
|
||||
|
||||
- package-ecosystem: gradle
|
||||
target-branch: 6.4.x
|
||||
directory: /
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: sunday
|
||||
ignore:
|
||||
- dependency-name: '*'
|
||||
update-types:
|
||||
- version-update:semver-major
|
||||
- version-update:semver-minor
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- 'type: dependency-upgrade'
|
||||
groups:
|
||||
development-dependencies:
|
||||
update-types:
|
||||
- patch
|
||||
patterns:
|
||||
- com.gradle.*
|
||||
- com.github.spotbugs
|
||||
- io.spring.*
|
||||
- org.ajoberstar.grgit
|
||||
- org.antora
|
||||
- com.google.protobuf
|
||||
- io.micrometer:micrometer-docs-generator
|
||||
- com.willowtreeapps.assertk:assertk-jvm
|
||||
- org.jetbrains.dokka
|
||||
- org.apache.activemq*
|
||||
- org.aspectj*
|
||||
- org.awaitility:awaitility
|
||||
- org.apache.commons:commons-dbcp2
|
||||
- org.apache.derby
|
||||
- com.icegreen:greenmail
|
||||
- org.hibernate.orm*
|
||||
- org.testcontainers*
|
||||
- org.hsqldb:hsqldb
|
||||
- com.h2database:h2
|
||||
- org.postgresql:postgresql
|
||||
- mysql:mysql-connector-java
|
||||
- com.oracle.database.jdbc:ojdbc11
|
||||
- org.apache.tomcat.embed:tomcat-embed-websocket
|
||||
- org.xmlunit:xmlunit-assertj3
|
||||
- com.thoughtworks.xstream:xstream
|
||||
- org.springframework.security*
|
||||
|
||||
- package-ecosystem: gradle
|
||||
target-branch: 6.3.x
|
||||
directory: /
|
||||
@@ -102,6 +148,18 @@ updates:
|
||||
development-dependencies:
|
||||
patterns:
|
||||
- '*'
|
||||
- package-ecosystem: github-actions
|
||||
target-branch: 6.4.x
|
||||
directory: /
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
labels:
|
||||
- 'type: task'
|
||||
groups:
|
||||
development-dependencies:
|
||||
patterns:
|
||||
- '*'
|
||||
|
||||
- package-ecosystem: github-actions
|
||||
target-branch: 6.3.x
|
||||
|
||||
52
build.gradle
52
build.gradle
@@ -24,7 +24,7 @@ plugins {
|
||||
id 'io.spring.antora.generate-antora-yml' version '0.0.1'
|
||||
id 'com.github.spotbugs' version '6.0.27'
|
||||
id 'com.google.protobuf' version '0.9.4' apply false
|
||||
id 'io.freefair.aggregate-javadoc' version '8.10.2'
|
||||
id 'io.freefair.aggregate-javadoc' version '8.11'
|
||||
}
|
||||
|
||||
if (isCI) {
|
||||
@@ -55,15 +55,15 @@ ext {
|
||||
modifiedFiles.finalizeValueOnRead()
|
||||
|
||||
apacheSshdVersion = '2.14.0'
|
||||
artemisVersion = '2.37.0'
|
||||
artemisVersion = '2.39.0'
|
||||
aspectjVersion = '1.9.22.1'
|
||||
assertjVersion = '3.26.3'
|
||||
assertjVersion = '3.27.1'
|
||||
assertkVersion = '0.28.1'
|
||||
avroVersion = '1.12.0'
|
||||
awaitilityVersion = '4.2.2'
|
||||
camelVersion = '4.8.2'
|
||||
commonsDbcp2Version = '2.12.0'
|
||||
commonsIoVersion = '2.17.0'
|
||||
camelVersion = '4.9.0'
|
||||
commonsDbcp2Version = '2.13.0'
|
||||
commonsIoVersion = '2.18.0'
|
||||
commonsNetVersion = '3.11.1'
|
||||
curatorVersion = '5.7.1'
|
||||
debeziumVersion = '3.0.6.Final'
|
||||
@@ -89,35 +89,35 @@ ext {
|
||||
junitJupiterVersion = '5.11.4'
|
||||
kotlinCoroutinesVersion = '1.8.1'
|
||||
kryoVersion = '5.6.2'
|
||||
lettuceVersion = '6.4.1.RELEASE'
|
||||
lettuceVersion = '6.5.2.RELEASE'
|
||||
log4jVersion = '2.24.3'
|
||||
mailVersion = '2.0.3'
|
||||
micrometerTracingVersion = '1.4.1'
|
||||
micrometerVersion = '1.14.2'
|
||||
micrometerTracingVersion = '1.5.0-SNAPSHOT'
|
||||
micrometerVersion = '1.15.0-SNAPSHOT'
|
||||
mockitoVersion = '5.14.2'
|
||||
mongoDriverVersion = '5.2.1'
|
||||
mysqlVersion = '9.1.0'
|
||||
oracleVersion = '23.5.0.24.07'
|
||||
oracleVersion = '23.6.0.24.10'
|
||||
pahoMqttClientVersion = '1.2.5'
|
||||
postgresVersion = '42.7.4'
|
||||
protobufVersion = '4.28.3'
|
||||
protobufVersion = '4.29.2'
|
||||
r2dbch2Version = '1.0.0.RELEASE'
|
||||
reactorVersion = '2024.0.1'
|
||||
resilience4jVersion = '2.2.0'
|
||||
romeToolsVersion = '2.1.0'
|
||||
rsocketVersion = '1.1.4'
|
||||
servletApiVersion = '6.0.0'
|
||||
servletApiVersion = '6.1.0'
|
||||
smackVersion = '4.4.8'
|
||||
springAmqpVersion = '3.2.1'
|
||||
springDataVersion = '2024.1.1'
|
||||
springDataVersion = '2025.0.0-SNAPSHOT'
|
||||
springGraphqlVersion = '1.3.3'
|
||||
springKafkaVersion = '3.3.1'
|
||||
springRetryVersion = '2.0.11'
|
||||
springSecurityVersion = '6.4.2'
|
||||
springSecurityVersion = '6.5.0-SNAPSHOT'
|
||||
springVersion = '6.2.1'
|
||||
springWsVersion = '4.0.11'
|
||||
testcontainersVersion = '1.20.4'
|
||||
tomcatVersion = '10.1.34'
|
||||
tomcatVersion = '11.0.2'
|
||||
xmlUnitVersion = '2.10.0'
|
||||
xstreamVersion = '1.4.21'
|
||||
ztZipVersion = '1.17'
|
||||
@@ -265,6 +265,10 @@ configure(javaProjects) { subproject ->
|
||||
options.addBooleanOption('Werror', true) // fail build on Javadoc warnings
|
||||
}
|
||||
|
||||
tasks.withType(JavaForkOptions) {
|
||||
jvmArgs '--add-opens', 'java.base/java.util=ALL-UNNAMED'
|
||||
}
|
||||
|
||||
eclipse {
|
||||
project {
|
||||
natures += 'org.springframework.ide.eclipse.core.springnature'
|
||||
@@ -380,7 +384,7 @@ configure(javaProjects) { subproject ->
|
||||
|
||||
checkstyle {
|
||||
configDirectory.set(rootProject.file('src/checkstyle'))
|
||||
toolVersion = project.hasProperty('checkstyleVersion') ? project.checkstyleVersion : '10.18.2'
|
||||
toolVersion = project.hasProperty('checkstyleVersion') ? project.checkstyleVersion : '10.21.1'
|
||||
}
|
||||
|
||||
jar {
|
||||
@@ -663,8 +667,7 @@ project('spring-integration-groovy') {
|
||||
}
|
||||
|
||||
tasks.withType(JavaForkOptions) {
|
||||
jvmArgs '--add-opens', 'java.base/java.lang=ALL-UNNAMED',
|
||||
'--add-opens', 'java.base/java.util=ALL-UNNAMED'
|
||||
jvmArgs '--add-opens', 'java.base/java.lang=ALL-UNNAMED'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -716,8 +719,7 @@ project('spring-integration-ip') {
|
||||
}
|
||||
|
||||
tasks.withType(JavaForkOptions) {
|
||||
jvmArgs '--add-opens', 'java.base/java.nio.channels.spi=ALL-UNNAMED',
|
||||
'--add-opens', 'java.base/java.util=ALL-UNNAMED'
|
||||
jvmArgs '--add-opens', 'java.base/java.nio.channels.spi=ALL-UNNAMED'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -822,7 +824,6 @@ project('spring-integration-r2dbc') {
|
||||
description = 'Spring Integration R2DBC Support'
|
||||
dependencies {
|
||||
api 'org.springframework.data:spring-data-r2dbc'
|
||||
api 'org.springframework:spring-r2dbc'
|
||||
|
||||
testImplementation "io.r2dbc:r2dbc-h2:$r2dbch2Version"
|
||||
}
|
||||
@@ -831,8 +832,7 @@ project('spring-integration-r2dbc') {
|
||||
project('spring-integration-mqtt') {
|
||||
description = 'Spring Integration MQTT Support'
|
||||
dependencies {
|
||||
api "org.eclipse.paho:org.eclipse.paho.client.mqttv3:$pahoMqttClientVersion"
|
||||
|
||||
optionalApi "org.eclipse.paho:org.eclipse.paho.client.mqttv3:$pahoMqttClientVersion"
|
||||
optionalApi "org.eclipse.paho:org.eclipse.paho.mqttv5.client:$pahoMqttClientVersion"
|
||||
|
||||
testImplementation project(':spring-integration-jmx')
|
||||
@@ -844,13 +844,10 @@ project('spring-integration-redis') {
|
||||
description = 'Spring Integration Redis Support'
|
||||
dependencies {
|
||||
api 'org.springframework.data:spring-data-redis'
|
||||
|
||||
testImplementation "io.lettuce:lettuce-core:$lettuceVersion"
|
||||
testImplementation 'com.fasterxml.jackson.core:jackson-databind'
|
||||
}
|
||||
|
||||
tasks.withType(JavaForkOptions) {
|
||||
jvmArgs '--add-opens', 'java.base/java.util=ALL-UNNAMED'
|
||||
}
|
||||
}
|
||||
|
||||
project('spring-integration-rsocket') {
|
||||
@@ -876,7 +873,6 @@ project('spring-integration-scripting') {
|
||||
jvmArgs '--add-opens', 'java.base/sun.nio.ch=ALL-UNNAMED',
|
||||
'--add-opens', 'java.base/java.io=ALL-UNNAMED',
|
||||
'--add-opens', 'java.base/java.lang=ALL-UNNAMED',
|
||||
'--add-opens', 'java.base/java.util=ALL-UNNAMED',
|
||||
'-Dpolyglot.engine.WarnInterpreterOnly=false'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
version=6.4.2-SNAPSHOT
|
||||
version=6.5.0-SNAPSHOT
|
||||
org.gradle.jvmargs=-Xmx2g -XX:+HeapDumpOnOutOfMemoryError -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8
|
||||
kotlin.jvm.target.validation.mode=IGNORE
|
||||
org.gradle.caching=true
|
||||
|
||||
@@ -255,6 +255,7 @@
|
||||
* xref:samples.adoc[]
|
||||
* xref:resources.adoc[]
|
||||
* xref:history.adoc[]
|
||||
** xref:changes-6.3-6.4.adoc[]
|
||||
** xref:changes-6.2-6.3.adoc[]
|
||||
** xref:changes-6.1-6.2.adoc[]
|
||||
** xref:changes-6.0-6.1.adoc[]
|
||||
|
||||
93
src/reference/antora/modules/ROOT/pages/changes-6.3-6.4.adoc
Normal file
93
src/reference/antora/modules/ROOT/pages/changes-6.3-6.4.adoc
Normal file
@@ -0,0 +1,93 @@
|
||||
[[migration-6.3-6.4]]
|
||||
= Changes between 6.3 and 6.4
|
||||
|
||||
[[x6.4-new-components]]
|
||||
== New Components
|
||||
|
||||
A `BaseMessageBuilder` class has been extracted from the `MessageBuilder` to simplify a custom builder implementation where the most of the logic should be the same as `MessageBuilder` one.
|
||||
See xref:message.adoc#message-builder[`MessageBuilder`] for more information.
|
||||
|
||||
The new Control Bus interaction model is implemented in the `ControlBusCommandRegistry`.
|
||||
A new `ControlBusFactoryBean` class is recommended to be used instead of deprecated `ExpressionControlBusFactoryBean`.
|
||||
See xref:control-bus.adoc[Control Bus] for more information.
|
||||
|
||||
Also, a `ControlBusController` (together with an `@EnableControlBusController`) is introduced for managing exposed commands by the mentioned `ControlBusCommandRegistry`.
|
||||
See xref:http.adoc[HTTP Support] for more information.
|
||||
|
||||
The SpEL evaluation infrastructure now supports configuration for `IndexAccessor`.
|
||||
Also, an out-of-the-box `JsonIndexAccessor` is provided.
|
||||
See xref:spel.adoc[SpEL Support] for more information.
|
||||
|
||||
[[x6.4-general]]
|
||||
== General Changes
|
||||
|
||||
The Java DSL `SourcePollingChannelAdapterSpec` can now be configured with a custom `TaskScheduler`
|
||||
|
||||
[[x6.4-remote-files-changes]]
|
||||
== Remote File Adapters Changes
|
||||
|
||||
The `AbstractRemoteFileStreamingMessageSource` has now a convenient `clearFetchedCache()` API to remove references from cache for not processed remote files.
|
||||
The references stay in cache because polling configuration does not allow to process all the fetched in one cycle, and the target `SessionFactory` might be changed between polling cycles, e.g. via `RotatingServerAdvice`.
|
||||
|
||||
[[x6.4-jdbc-changes]]
|
||||
== JDBC Changes
|
||||
|
||||
The `LobHandler` (and respective API) has been deprecated for removal in Spring Framework `6.2`.
|
||||
Respective option on `JdbcMessageStore` (and similar) have been deprecated as well.
|
||||
The byte array handling for serialized message is fully deferred to JDBC driver.
|
||||
|
||||
The `LockRepository.delete()` method return the result of removing ownership of a distributed lock.
|
||||
And the `JdbcLockRegistry.JdbcLock.unlock()` method throws `ConcurrentModificationException` if the ownership of the lock is expired.
|
||||
See xref:jdbc.adoc[JDBC Support] for more information.
|
||||
|
||||
[[x6.4-zeromq-changes]]
|
||||
== ZeroMQ Changes
|
||||
|
||||
The outbound component `ZeroMqMessageHandler` (and respective API) can now bind a TCP port instead of connecting to a given URL.
|
||||
See xref:zeromq.adoc[ZeroMQ Support] for more information.
|
||||
|
||||
[[x6.4-redis-changes]]
|
||||
== Redis Changes
|
||||
|
||||
Instead of throwing `IllegalStateException`, the `RedisLockRegistry.RedisLock.unlock()` method throws `ConcurrentModificationException` if the ownership of the lock is expired.
|
||||
Add a `RedisLockRegistry.setRenewalTaskScheduler()` to periodic lock renewal.
|
||||
See xref:redis.adoc[Redis Support] for more information.
|
||||
|
||||
[[x6.4-groovy-changes]]
|
||||
== Groovy Changes
|
||||
|
||||
The `ControlBusFactoryBean` (and respective `<int-groovy:control-bus>` XML tag) has been deprecated (for removal) in favor of new introduced `ControlBusFactoryBean` based on a new model implemented in the `ControlBusCommandRegistry`.
|
||||
See xref:control-bus.adoc[Control Bus] for more information.
|
||||
|
||||
|
||||
[[x6.4-sftp-changes]]
|
||||
== SFTP Support Changes
|
||||
|
||||
The `DefaultSftpSessionFactory` now exposes a `Consumer<SshClient>` configurer property to further customize an internal `SshClient`.
|
||||
See xref:sftp/session-factory.adoc[SFTP Session Factory] for more information.
|
||||
|
||||
[[x6.4-mqtt-support-changes]]
|
||||
== MQTT Support Changes
|
||||
|
||||
Multiple instances of `MqttPahoMessageDrivenChannelAdapter` and `Mqttv5PahoMessageDrivenChannelAdapter` can now be added at runtime using corresponding `ClientManager` through `IntegrationFlowContext`
|
||||
Also a `MqttMessageNotDeliveredEvent` event has been introduced to emit when action callback reacts to the delivery failure.
|
||||
See xref:mqtt.adoc[MQTT Support] for more information.
|
||||
|
||||
[[x6.4-zip-support-changes]]
|
||||
== Zip Support Changes
|
||||
|
||||
The `ZipTransformer` now exposes a `fileNameGenerator` property to customize a target zip file (and optional zip entry) name generation.
|
||||
See xref:zip.adoc[Zip Support] for more information.
|
||||
|
||||
|
||||
[[x6.4-scripting-changes]]
|
||||
== Scripting Changes
|
||||
|
||||
The Python scripts evaluation is now migrated to the GraalVM Polyglot.
|
||||
See xref:scripting.adoc[Scripting Support] for more information.
|
||||
|
||||
[[x6.4-mail-changes]]
|
||||
== Mail Changes
|
||||
|
||||
The `AbstractMailReceiver` exposes an option to disable setting `Flags.Flag.FLAGGED` into a received message as fallback flag.
|
||||
See xref:mail.adoc[Mail Support] for more information.
|
||||
@@ -2,104 +2,14 @@
|
||||
= What's New?
|
||||
|
||||
[[spring-integration-intro-new]]
|
||||
For those who are already familiar with Spring Integration, this chapter provides a brief overview of the new features of version 6.4.
|
||||
For those who are already familiar with Spring Integration, this chapter provides a brief overview of the new features of version 6.5.
|
||||
|
||||
If you are interested in the changes and features that were introduced in earlier versions, see the xref:history.adoc[Change History].
|
||||
|
||||
[[what-s-new-in-spring-integration-6-4]]
|
||||
== What's New in Spring Integration 6.4?
|
||||
[[what-s-new-in-spring-integration-6-5]]
|
||||
== What's New in Spring Integration 6.5?
|
||||
|
||||
If you are interested in more details, see the Issue Tracker tickets that were resolved as part of the 6.4 development process.
|
||||
If you are interested in more details, see the Issue Tracker tickets that were resolved as part of the 6.5 development process.
|
||||
|
||||
In general the project has been moved to the latest dependency versions.
|
||||
|
||||
[[x6.4-new-components]]
|
||||
=== New Components
|
||||
|
||||
A `BaseMessageBuilder` class has been extracted from the `MessageBuilder` to simplify a custom builder implementation where the most of the logic should be the same as `MessageBuilder` one.
|
||||
See xref:message.adoc#message-builder[`MessageBuilder`] for more information.
|
||||
|
||||
The new Control Bus interaction model is implemented in the `ControlBusCommandRegistry`.
|
||||
A new `ControlBusFactoryBean` class is recommended to be used instead of deprecated `ExpressionControlBusFactoryBean`.
|
||||
See xref:control-bus.adoc[Control Bus] for more information.
|
||||
|
||||
Also, a `ControlBusController` (together with an `@EnableControlBusController`) is introduced for managing exposed commands by the mentioned `ControlBusCommandRegistry`.
|
||||
See xref:http.adoc[HTTP Support] for more information.
|
||||
|
||||
The SpEL evaluation infrastructure now supports configuration for `IndexAccessor`.
|
||||
Also, an out-of-the-box `JsonIndexAccessor` is provided.
|
||||
See xref:spel.adoc[SpEL Support] for more information.
|
||||
|
||||
[[x6.4-general]]
|
||||
=== General Changes
|
||||
|
||||
The Java DSL `SourcePollingChannelAdapterSpec` can now be configured with a custom `TaskScheduler`
|
||||
|
||||
[[x6.4-remote-files-changes]]
|
||||
=== Remote File Adapters Changes
|
||||
|
||||
The `AbstractRemoteFileStreamingMessageSource` has now a convenient `clearFetchedCache()` API to remove references from cache for not processed remote files.
|
||||
The references stay in cache because polling configuration does not allow to process all the fetched in one cycle, and the target `SessionFactory` might be changed between polling cycles, e.g. via `RotatingServerAdvice`.
|
||||
|
||||
[[x6.4-jdbc-changes]]
|
||||
=== JDBC Changes
|
||||
|
||||
The `LobHandler` (and respective API) has been deprecated for removal in Spring Framework `6.2`.
|
||||
Respective option on `JdbcMessageStore` (and similar) have been deprecated as well.
|
||||
The byte array handling for serialized message is fully deferred to JDBC driver.
|
||||
|
||||
The `LockRepository.delete()` method return the result of removing ownership of a distributed lock.
|
||||
And the `JdbcLockRegistry.JdbcLock.unlock()` method throws `ConcurrentModificationException` if the ownership of the lock is expired.
|
||||
See xref:jdbc.adoc[JDBC Support] for more information.
|
||||
|
||||
[[x6.4-zeromq-changes]]
|
||||
=== ZeroMQ Changes
|
||||
|
||||
The outbound component `ZeroMqMessageHandler` (and respective API) can now bind a TCP port instead of connecting to a given URL.
|
||||
See xref:zeromq.adoc[ZeroMQ Support] for more information.
|
||||
|
||||
[[x6.4-redis-changes]]
|
||||
=== Redis Changes
|
||||
|
||||
Instead of throwing `IllegalStateException`, the `RedisLockRegistry.RedisLock.unlock()` method throws `ConcurrentModificationException` if the ownership of the lock is expired.
|
||||
Add a `RedisLockRegistry.setRenewalTaskScheduler()` to periodic lock renewal.
|
||||
See xref:redis.adoc[Redis Support] for more information.
|
||||
|
||||
[[x6.4-groovy-changes]]
|
||||
=== Groovy Changes
|
||||
|
||||
The `ControlBusFactoryBean` (and respective `<int-groovy:control-bus>` XML tag) has been deprecated (for removal) in favor of new introduced `ControlBusFactoryBean` based on a new model implemented in the `ControlBusCommandRegistry`.
|
||||
See xref:control-bus.adoc[Control Bus] for more information.
|
||||
|
||||
|
||||
[[x6.4-sftp-changes]]
|
||||
=== SFTP Support Changes
|
||||
|
||||
The `DefaultSftpSessionFactory` now exposes a `Consumer<SshClient>` configurer property to further customize an internal `SshClient`.
|
||||
See xref:sftp/session-factory.adoc[SFTP Session Factory] for more information.
|
||||
|
||||
[[x6.4-mqtt-support-changes]]
|
||||
=== MQTT Support Changes
|
||||
|
||||
Multiple instances of `MqttPahoMessageDrivenChannelAdapter` and `Mqttv5PahoMessageDrivenChannelAdapter` can now be added at runtime using corresponding `ClientManager` through `IntegrationFlowContext`
|
||||
Also a `MqttMessageNotDeliveredEvent` event has been introduced to emit when action callback reacts to the delivery failure.
|
||||
See xref:mqtt.adoc[MQTT Support] for more information.
|
||||
|
||||
[[x6.4-zip-support-changes]]
|
||||
=== Zip Support Changes
|
||||
|
||||
The `ZipTransformer` now exposes a `fileNameGenerator` property to customize a target zip file (and optional zip entry) name generation.
|
||||
See xref:zip.adoc[Zip Support] for more information.
|
||||
|
||||
|
||||
[[x6.4-scripting-changes]]
|
||||
=== Scripting Changes
|
||||
|
||||
The Python scripts evaluation is now migrated to the GraalVM Polyglot.
|
||||
See xref:scripting.adoc[Scripting Support] for more information.
|
||||
|
||||
[[x6.4-mail-changes]]
|
||||
=== Mail Changes
|
||||
|
||||
The `AbstractMailReceiver` exposes an option to disable setting `Flags.Flag.FLAGGED` into a received message as fallback flag.
|
||||
See xref:mail.adoc[Mail Support] for more information.
|
||||
Reference in New Issue
Block a user