Skip to content

Commit a4f470f

Browse files
committed
Fix docs for version 7.1
* Extract `whats-new` of `7.0` into `changes-6.5-7.0.adoc` * Fix `whats-new.adoc` & `preface.adoc` for the current `7.1`
1 parent 46110f5 commit a4f470f

File tree

4 files changed

+141
-137
lines changed

4 files changed

+141
-137
lines changed

src/reference/antora/modules/ROOT/nav.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@
258258
* xref:samples.adoc[]
259259
* xref:resources.adoc[]
260260
* xref:history.adoc[]
261+
** xref:changes-6.5-7.0.adoc[]
261262
** xref:changes-6.4-6.5.adoc[]
262263
** xref:changes-6.3-6.4.adoc[]
263264
** xref:changes-6.2-6.3.adoc[]
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
[[migration-6.5-7.0]]
2+
= Changes between 6.5 and 7.0
3+
4+
[[x7.0-general]]
5+
== General Changes
6+
7+
Junit 4-Based Support Components are deprecated.
8+
9+
The project now leverages https://jspecify.dev/docs/start-here/[JSpecify] annotations to expose null-safe APIs and to check the consistency of those nullability declarations with https://github.com/uber/NullAway[NullAway] as part of its build.
10+
11+
The `spring-retry` dependency, together with all its API usage have been replaced by retry API in Spring Framework Core module.
12+
This breaking change is the natural evolution of the whole Spring portfolio.
13+
In general, the following references have been migrated:
14+
15+
- `org.springframework.retry.support.RetryTemplate` -> `org.springframework.core.retry.RetryTemplate`;
16+
- `org.springframework.retry.RetryPolicy` -> `org.springframework.core.retry.RetryPolicy`;
17+
- `org.springframework.retry.RecoveryCallback` -> `org.springframework.integration.core.RecoveryCallback`.
18+
There is no `RecoveryCallback` abstraction in the Spring Framework, since regular `try..catch` on the `RetryException` is enough.
19+
For Spring Integration, the `RecoveryCallback` makes sense as a dead-letter publisher to an error channel;
20+
- `org.springframework.retry.backoff.BackOffPolicy` -> `org.springframework.util.backoff.BackOff`.
21+
However, it is not exposed directly as a `RetryTemplate` options: rather as an internal API backed by the configuration via `RetryPolicy.Builder`;
22+
- The `RetryContext` in AMPQ, JMS and Apache Kafka channel adapters is replaced with an internal `AttributeAccessor` implementation.
23+
24+
Therefore, the following project classes have suffered breaking changes:
25+
26+
- `AmqpBaseInboundChannelAdapterSpec`
27+
- `AmqpBaseInboundGatewaySpec`
28+
- `AmqpInboundChannelAdapter`
29+
- `AmqpInboundGateway`
30+
- `PostgresSubscribableChannel`
31+
- `ChannelPublishingJmsMessageListener`
32+
- `JmsInboundGatewaySpec`
33+
- `JmsMessageDrivenChannelAdapterSpec`
34+
- `KafkaInboundGatewaySpec`
35+
- `KafkaMessageDrivenChannelAdapterSpec`
36+
- `KafkaInboundEndpoint`
37+
- `KafkaInboundGateway`
38+
- `KafkaMessageDrivenChannelAdapter`
39+
40+
The `RequestHandlerRetryAdvice` was rebuilt to avoid external API as much as possible.
41+
For the stateless retry logic, there is just enough to provide a `org.springframework.core.retry.RetryPolicy`.
42+
The stateful retry logic is activated by the `Function<Message<?>, Object> stateKeyFunction`.
43+
The `RetryStateGenerator` abstraction and its `SpelExpressionRetryStateGenerator` implementation have been removed due to dependency on the `spring-retry` API.
44+
45+
The `max-attempts` attribute of the `<int:handler-retry-advice>` XML component has been renamed to the `max-retries` to better reflect the logic behind this property which is exactly about the number of attempts to call a failing handler.
46+
47+
See xref:handler-advice/classes.adoc#retry-advice[Retry Advice] for more information.
48+
49+
All the modules now follow the standard package structure.
50+
The inbound and outbound components are declared in the `inbound` and `outbound` packages, respectively.
51+
The `MessageChannel` implementations in the `channel` package.
52+
Most of the modules have followed this rule from day one.
53+
The refactoring for package structure in this version includes the rest of modules: `spring-integration-file`, `spring-integration-ftp`, `spring-integration-ip`, `spring-integration-jdbc`, `spring-integration-jms`, `spring-integration-jmx`, `spring-integration-mail`, `spring-integration-sftp`, `spring-integration-stream` and `spring-integration-ws`.
54+
The classes which were in root packages are marked now as deprecated.
55+
56+
[[x7.0-new-components]]
57+
== New Components
58+
59+
A new `DistributedLock` interface has been introduced, providing new methods, `lock(Duration ttl`) and `tryLock(long time, TimeUnit unit, Duration ttl)`, to acquire a lock with a custom time-to-live (TTL).
60+
See xref:distributed-locks.adoc[] for more information.
61+
62+
The Jackson 2 support has been deprecated for removal.
63+
Jackson 3 is now the default with new components: `JacksonJsonObjectMapper`, `JacksonPropertyAccessor`, `JacksonIndexAccessor`, and `JacksonMessagingUtils`.
64+
See their Javadocs for more information and deprecated classes for a migration path.
65+
66+
The `spring-integration-amqp` module now implements channel adapters for RabbitMQ AMQP 1.0 support.
67+
The dedicated xref:amqp/amqp-1.0.adoc[AMQP 1.0 Support] chapter provides more information.
68+
69+
[[x7.0-jdbc-changes]]
70+
=== JDBC Changes
71+
72+
The JDBC module now provides a Java DSL API via its dedicated `org.springframework.integration.jdbc.dsl.Jdbc` factory.
73+
The xref:jdbc/dsl.adoc[] chapter provides more details.
74+
75+
The `JdbcLock` now supports the feature of customized time-to-live for the lock status data.
76+
See xref:jdbc/lock-registry.adoc[] for more information.
77+
78+
The message stores now use a `MESSAGE_CONTENT` column name for serialized messages instead of `MESSAGE_BYTES` since the content might not always be stored as a byte array.
79+
All the out-of-the-box SQL schemas have been changed, too, to rely on the `MESSAGE_CONTENT` name for the respective column in the `INT_MESSAGE` and `INT_CHANNEL_MESSAGE` tables.
80+
See xref:jdbc/message-store.adoc[] for more information.
81+
82+
The `JdbcChannelMessageStore` now supports JSON serialization as an alternative to Java serialization.
83+
New components `JsonChannelMessageStorePreparedStatementSetter` and `JsonMessageRowMapper` enable storing messages in JSON format.
84+
This requires modifying the database schema to use text-based column types (such as `JSONB`, `JSON`, `TEXT`, or `CLOB`) instead of binary types.
85+
See xref:jdbc/message-store-json.adoc[] for more information.
86+
87+
[[x7.0-redis-changes]]
88+
=== Redis Changes
89+
90+
The `RedisLock` now supports the feature of customized time-to-live for the lock status data.
91+
See xref:redis.adoc#redis-lock-registry[Redis Lock Registry] for more information.
92+
93+
[[x7.0-hazelcast-changes]]
94+
=== Hazelcast Changes
95+
96+
Previously deprecated classes in the `spring-integation-hazelcast` module, such as `LeaderInitiator`, `HazelcastMembershipListener`, `HazelcastLocalInstanceRegistrar` and `HazelcastLockRegistry`, are now removed due to not supported CP-subsystem in Hazelcast library for Open Source.
97+
98+
[[x7.0-mqtt-changes]]
99+
=== MQTT Changes
100+
101+
The `AbstractMqttMessageDrivenChannelAdapter` and `ClientManager` implementations now expose a `quiescentTimeout` option which is propagated in their `stop()` method down to the `disconnectForcibly()` API of the MQTT Paho clients.
102+
See xref:mqtt.adoc[] for more information.
103+
104+
[[x7.0-files-changes]]
105+
=== Files Changes
106+
107+
The `FileReadingMessageSource` now can be configured with a SpEL `Expression` for its `directory` property.
108+
See xref:file/reading.adoc[] for more information.
109+
110+
[[x7.0-remote-files-changes]]
111+
=== Remote Files Support Changes
112+
113+
The `AbstractInboundFileSynchronizer` now caches a filtered result of the `Session.list(remoteDirectory)` after slicing by the `maxFetchSize`.
114+
So, later synchronizations deal with the cache only by the `maxFetchSize` until the cache is exhausted.
115+
See xref:sftp/max-fetch.adoc[] for more information.
116+
117+
All the `AbstractPersistentAcceptOnceFileListFilter` implementations now use a "long file name" for the metadata entry key.
118+
Previously, just a file name may cause the metadata overriding problem when the same filter is used for different directories with same file names.
119+
For example, the `RotatingServerAdvice` may switch to directories based on the timestamp, but files are placed there with the same name according to business logic.
120+
See xref:file/remote-persistent-flf.adoc[Remote Persistent File List Filters] for more information.
121+
122+
[[x7.0-null-safety]]
123+
=== Null Safety
124+
Updated the codebase to use JSpecify and NullAway, adding a comprehensive null safety implementation that uses `@NullMarked` annotations to default all types to non-null at the package level and `@Nullable` annotations to explicitly mark types that can be null.
125+
See xref:null-safety.adoc[] for more information.
126+
127+
[[x7.0-smb-upgrade]]
128+
=== SMB Support Changes
129+
130+
The JCIFS library behind the SMB support module has been upgraded to 3.0.0.
131+
It is a major rewrite of the codebase and implements a new package structure.
132+
This is a breaking change, and direct references to components of the JCIFS library will need to be updated.
133+
See xref:smb.adoc[] for more information.

src/reference/antora/modules/ROOT/pages/preface.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ This section details the compatible https://www.oracle.com/technetwork/java/java
1515
[[supported-java-versions]]
1616
=== Compatible Java Versions
1717

18-
For Spring Integration 7.0.x, the minimum compatible Java version is Java SE 17.
18+
For Spring Integration 7.1.x, the minimum compatible Java version is Java SE 17.
1919
Older versions of Java are not supported.
2020

2121
[[supported-spring-versions]]
2222
=== Compatible Versions of the Spring Framework
2323

24-
Spring Integration 7.0.x requires Spring Framework 7.0 or later.
24+
Spring Integration 7.1.x requires Spring Framework 7.0 or later.
2525

2626
[[code-conventions]]
2727
== Code Conventions

src/reference/antora/modules/ROOT/pages/whats-new.adoc

Lines changed: 5 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -2,145 +2,15 @@
22
= What's New?
33

44
[[spring-integration-intro-new]]
5-
For those who are already familiar with Spring Integration, this chapter provides a brief overview of the new features of version 7.0.
5+
For those who are already familiar with Spring Integration, this chapter provides a brief overview of the new features of version 7.1.
66

77
If you are interested in the changes and features that were introduced in earlier versions, see the xref:history.adoc[Change History].
88

9-
[[what-s-new-in-spring-integration-7-0]]
10-
== What's New in Spring Integration 7.0?
9+
[[what-s-new-in-spring-integration-7-1]]
10+
== What's New in Spring Integration 7.1?
1111

12-
For more details, see the https://github.com/spring-projects/spring-integration/issues[GitHub Issues] that were resolved as part of the 7.0 development process.
12+
For more details, see the https://github.com/spring-projects/spring-integration/issues[GitHub Issues] that were resolved as part of the 7.1 development process.
1313

1414
In general, the project has been moved to the latest dependency versions.
15-
Java 17 is still the baseline, but Java 24 is supported.
15+
Java 17 is still the baseline, but Java 25 is supported.
1616

17-
[[x7.0-general]]
18-
== General Changes
19-
20-
Junit 4-Based Support Components are deprecated.
21-
22-
The project now leverages https://jspecify.dev/docs/start-here/[JSpecify] annotations to expose null-safe APIs and to check the consistency of those nullability declarations with https://github.com/uber/NullAway[NullAway] as part of its build.
23-
24-
The `spring-retry` dependency, together with all its API usage have been replaced by retry API in Spring Framework Core module.
25-
This breaking change is the natural evolution of the whole Spring portfolio.
26-
In general, the following references have been migrated:
27-
28-
- `org.springframework.retry.support.RetryTemplate` -> `org.springframework.core.retry.RetryTemplate`;
29-
- `org.springframework.retry.RetryPolicy` -> `org.springframework.core.retry.RetryPolicy`;
30-
- `org.springframework.retry.RecoveryCallback` -> `org.springframework.integration.core.RecoveryCallback`.
31-
There is no `RecoveryCallback` abstraction in the Spring Framework, since regular `try..catch` on the `RetryException` is enough.
32-
For Spring Integration, the `RecoveryCallback` makes sense as a dead-letter publisher to an error channel;
33-
- `org.springframework.retry.backoff.BackOffPolicy` -> `org.springframework.util.backoff.BackOff`.
34-
However, it is not exposed directly as a `RetryTemplate` options: rather as an internal API backed by the configuration via `RetryPolicy.Builder`;
35-
- The `RetryContext` in AMPQ, JMS and Apache Kafka channel adapters is replaced with an internal `AttributeAccessor` implementation.
36-
37-
Therefore, the following project classes have suffered breaking changes:
38-
39-
- `AmqpBaseInboundChannelAdapterSpec`
40-
- `AmqpBaseInboundGatewaySpec`
41-
- `AmqpInboundChannelAdapter`
42-
- `AmqpInboundGateway`
43-
- `PostgresSubscribableChannel`
44-
- `ChannelPublishingJmsMessageListener`
45-
- `JmsInboundGatewaySpec`
46-
- `JmsMessageDrivenChannelAdapterSpec`
47-
- `KafkaInboundGatewaySpec`
48-
- `KafkaMessageDrivenChannelAdapterSpec`
49-
- `KafkaInboundEndpoint`
50-
- `KafkaInboundGateway`
51-
- `KafkaMessageDrivenChannelAdapter`
52-
53-
The `RequestHandlerRetryAdvice` was rebuilt to avoid external API as much as possible.
54-
For the stateless retry logic, there is just enough to provide a `org.springframework.core.retry.RetryPolicy`.
55-
The stateful retry logic is activated by the `Function<Message<?>, Object> stateKeyFunction`.
56-
The `RetryStateGenerator` abstraction and its `SpelExpressionRetryStateGenerator` implementation have been removed due to dependency on the `spring-retry` API.
57-
58-
The `max-attempts` attribute of the `<int:handler-retry-advice>` XML component has been renamed to the `max-retries` to better reflect the logic behind this property which is exactly about the number of attempts to call a failing handler.
59-
60-
See xref:handler-advice/classes.adoc#retry-advice[Retry Advice] for more information.
61-
62-
All the modules now follow the standard package structure.
63-
The inbound and outbound components are declared in the `inbound` and `outbound` packages, respectively.
64-
The `MessageChannel` implementations in the `channel` package.
65-
Most of the modules have followed this rule from day one.
66-
The refactoring for package structure in this version includes the rest of modules: `spring-integration-file`, `spring-integration-ftp`, `spring-integration-ip`, `spring-integration-jdbc`, `spring-integration-jms`, `spring-integration-jmx`, `spring-integration-mail`, `spring-integration-sftp`, `spring-integration-stream` and `spring-integration-ws`.
67-
The classes which were in root packages are marked now as deprecated.
68-
69-
[[x7.0-new-components]]
70-
== New Components
71-
72-
A new `DistributedLock` interface has been introduced, providing new methods, `lock(Duration ttl`) and `tryLock(long time, TimeUnit unit, Duration ttl)`, to acquire a lock with a custom time-to-live (TTL).
73-
See xref:distributed-locks.adoc[] for more information.
74-
75-
The Jackson 2 support has been deprecated for removal.
76-
Jackson 3 is now the default with new components: `JacksonJsonObjectMapper`, `JacksonPropertyAccessor`, `JacksonIndexAccessor`, and `JacksonMessagingUtils`.
77-
See their Javadocs for more information and deprecated classes for a migration path.
78-
79-
The `spring-integration-amqp` module now implements channel adapters for RabbitMQ AMQP 1.0 support.
80-
The dedicated xref:amqp/amqp-1.0.adoc[AMQP 1.0 Support] chapter provides more information.
81-
82-
[[x7.0-jdbc-changes]]
83-
=== JDBC Changes
84-
85-
The JDBC module now provides a Java DSL API via its dedicated `org.springframework.integration.jdbc.dsl.Jdbc` factory.
86-
The xref:jdbc/dsl.adoc[] chapter provides more details.
87-
88-
The `JdbcLock` now supports the feature of customized time-to-live for the lock status data.
89-
See xref:jdbc/lock-registry.adoc[] for more information.
90-
91-
The message stores now use a `MESSAGE_CONTENT` column name for serialized messages instead of `MESSAGE_BYTES` since the content might not always be stored as a byte array.
92-
All the out-of-the-box SQL schemas have been changed, too, to rely on the `MESSAGE_CONTENT` name for the respective column in the `INT_MESSAGE` and `INT_CHANNEL_MESSAGE` tables.
93-
See xref:jdbc/message-store.adoc[] for more information.
94-
95-
The `JdbcChannelMessageStore` now supports JSON serialization as an alternative to Java serialization.
96-
New components `JsonChannelMessageStorePreparedStatementSetter` and `JsonMessageRowMapper` enable storing messages in JSON format.
97-
This requires modifying the database schema to use text-based column types (such as `JSONB`, `JSON`, `TEXT`, or `CLOB`) instead of binary types.
98-
See xref:jdbc/message-store-json.adoc[] for more information.
99-
100-
[[x7.0-redis-changes]]
101-
=== Redis Changes
102-
103-
The `RedisLock` now supports the feature of customized time-to-live for the lock status data.
104-
See xref:redis.adoc#redis-lock-registry[Redis Lock Registry] for more information.
105-
106-
[[x7.0-hazelcast-changes]]
107-
=== Hazelcast Changes
108-
109-
Previously deprecated classes in the `spring-integation-hazelcast` module, such as `LeaderInitiator`, `HazelcastMembershipListener`, `HazelcastLocalInstanceRegistrar` and `HazelcastLockRegistry`, are now removed due to not supported CP-subsystem in Hazelcast library for Open Source.
110-
111-
[[x7.0-mqtt-changes]]
112-
=== MQTT Changes
113-
114-
The `AbstractMqttMessageDrivenChannelAdapter` and `ClientManager` implementations now expose a `quiescentTimeout` option which is propagated in their `stop()` method down to the `disconnectForcibly()` API of the MQTT Paho clients.
115-
See xref:mqtt.adoc[] for more information.
116-
117-
[[x7.0-files-changes]]
118-
=== Files Changes
119-
120-
The `FileReadingMessageSource` now can be configured with a SpEL `Expression` for its `directory` property.
121-
See xref:file/reading.adoc[] for more information.
122-
123-
[[x7.0-remote-files-changes]]
124-
=== Remote Files Support Changes
125-
126-
The `AbstractInboundFileSynchronizer` now caches a filtered result of the `Session.list(remoteDirectory)` after slicing by the `maxFetchSize`.
127-
So, later synchronizations deal with the cache only by the `maxFetchSize` until the cache is exhausted.
128-
See xref:sftp/max-fetch.adoc[] for more information.
129-
130-
All the `AbstractPersistentAcceptOnceFileListFilter` implementations now use a "long file name" for the metadata entry key.
131-
Previously, just a file name may cause the metadata overriding problem when the same filter is used for different directories with same file names.
132-
For example, the `RotatingServerAdvice` may switch to directories based on the timestamp, but files are placed there with the same name according to business logic.
133-
See xref:file/remote-persistent-flf.adoc[Remote Persistent File List Filters] for more information.
134-
135-
[[x7.0-null-safety]]
136-
=== Null Safety
137-
Updated the codebase to use JSpecify and NullAway, adding a comprehensive null safety implementation that uses `@NullMarked` annotations to default all types to non-null at the package level and `@Nullable` annotations to explicitly mark types that can be null.
138-
See xref:null-safety.adoc[] for more information.
139-
140-
[[x7.0-smb-upgrade]]
141-
=== SMB Support Changes
142-
143-
The JCIFS library behind the SMB support module has been upgraded to 3.0.0.
144-
It is a major rewrite of the codebase and implements a new package structure.
145-
This is a breaking change, and direct references to components of the JCIFS library will need to be updated.
146-
See xref:smb.adoc[] for more information.

0 commit comments

Comments
 (0)