Potential banner.txt conflicts and VersionExtractor optimization in Spring Cloud Stream 4.3.0
@olegz is already working on this.
Since Dec 1, 2025.
Assessment
This issue has not been assessed yet.
Description
Describe the issue
Derived of this issue, In Spring Cloud Stream 4.3.0 (included in Spring Cloud 2025.0.0), a banner.txt file was added as a resource in the default location where Spring Boot searches for application banners. This creates two potential issues:
-
Banner Location Conflict: When applications have their own
banner.txtfile in the default location (src/main/resources/), there's unpredictable behavior regarding which banner is displayed at startup. The ClassLoader may find either the Spring Cloud Stream banner or the application's banner first, making the outcome non-deterministic. -
Unnecessary Performance Impact: The
VersionExtractorEnvironmentPostProcessor always scans JARs to extract and set thespring-cloud-function.versionsystem property for display in the Spring Cloud Stream banner, even when applications want to use their custom banner and don't need this version information.
To Reproduce
- Create a Spring Boot application with Spring Cloud Stream 4.3.0+ dependency
- Add a custom
banner.txtfile insrc/main/resources/(default location) - Run the application
- Observe non-deterministic behavior: sometimes the Spring Cloud Stream banner appears, sometimes the custom banner appears
Version of the framework
- Spring Boot: 3.5.6
- Spring Cloud: 2025.0.0
- Spring Cloud Stream: 4.3.0
Expected behavior
-
Banner Predictability: Applications should have control over which banner is displayed, or there should be a clear precedence order that doesn't rely on ClassLoader order.
-
Optional Version Processing: There should be a configuration property to disable the
VersionExtractorprocessing when applications don't need thespring-cloud-function.versionsystem property, avoiding unnecessary JAR scanning and potential startup performance penalties.
Your considerations in this regard will be greatly appreciated! Thank you!
- Dominant language
- Java
- Stars
- 1.1k
- Forks
- 646
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 8
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from spring-cloud/spring-cloud-stream
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
spring-cloud/spring-cloud-stream#3268 · 1 comment ·
-
bug
spring-cloud/spring-cloud-stream#3257 · 2 comments · 2 reactions · 1 assignee ·
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
spring-cloud/spring-cloud-stream#3242 · 1 comment ·
-
Backport 4.3.x bug
spring-cloud/spring-cloud-stream#3211 · 3 comments · 1 assignee ·
-
bug
spring-cloud/spring-cloud-stream#3208 · 4 comments · 1 reaction · 1 assignee ·
All issues in spring-cloud/spring-cloud-stream
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
infinispan/infinispan#18150 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
opensearch-project/k-NN#3597 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100