Go to file
Patrick Strawderman 24e66b63d1
Backport Bot / build (push) Has been cancelled Details
Build and Deploy Snapshot / Build and Deploy Snapshot (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:ubuntu-latest name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:21], map[id:ubuntu-latest name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:23], map[id:ubuntu-latest name:Linux]) (push) Has been cancelled Details
Deploy Docs / Dispatch docs deployment (push) Has been cancelled Details
Build and Deploy Snapshot / Verify (push) Has been cancelled Details
Refine StringUtils#uriDecode and update documentation
Refine the StringUtils#uriDecode method in the following ways:
- Use a StringBuilder instead of ByteArrayOutputStream, and only decode
  %-encoded sequences.
- Use HexFormat.fromHexDigits to decode hex sequences.
- Decode to a byte array that is only allocated if encoded sequences are
  encountered.

This commit adds another optimization mainly for the use case where
there is no encoded sequence, and updates the Javadoc of both
StringUtils#uriDecode and UriUtils#decode to match the implementation.

Signed-off-by: Patrick Strawderman <pstrawderman@netflix.com>
Co-Authored-by: Sebastien Deleuze <sebastien.deleuze@broadcom.com>

Closes gh-35253
2025-07-29 21:44:26 +02:00
.github Publish releases using Central Portal 2025-07-12 18:42:03 +02:00
.idea
buildSrc Upgrade to Checkstyle 10.26.1 2025-07-01 17:51:14 +02:00
framework-api
framework-bom
framework-docs Consistent line breaks in reference documentation 2025-07-10 19:33:34 +02:00
framework-platform Upgrade to JUnit 5.13.4 2025-07-21 13:17:38 +03:00
gradle Upgrade to Gradle 8.14.3 2025-07-05 14:04:18 +02:00
integration-tests
spring-aop Catch InaccessibleObjectException next to IllegalAccessException 2025-07-11 22:44:11 +02:00
spring-aspects
spring-beans Invalidate cache entries for matching types after singleton creation 2025-07-25 22:38:57 +02:00
spring-context Make MessageSource locale parameter nullable 2025-07-23 16:02:38 +02:00
spring-context-indexer
spring-context-support Support @⁠CacheConfig("myCache") declarations for simplified config 2025-07-07 12:17:47 +02:00
spring-core Refine StringUtils#uriDecode and update documentation 2025-07-29 21:44:26 +02:00
spring-core-test
spring-expression
spring-instrument
spring-jcl
spring-jdbc Add note on SQL types with SqlBinaryValue/SqlCharacterValue 2025-07-28 22:06:38 +02:00
spring-jms Polishing 2025-07-04 18:20:27 +02:00
spring-messaging Polishing 2025-07-04 18:20:27 +02:00
spring-orm Add missing test for IllegalArgumentException 2025-06-25 22:35:26 +02:00
spring-oxm
spring-r2dbc
spring-test Make MessageSource locale parameter nullable 2025-07-23 16:02:38 +02:00
spring-tx
spring-web Refine StringUtils#uriDecode and update documentation 2025-07-29 21:44:26 +02:00
spring-webflux
spring-webmvc Polishing 2025-07-25 22:40:15 +02:00
spring-websocket Polish contribution 2025-06-30 17:35:43 +02:00
src
.editorconfig
.gitattributes
.gitignore
.sdkmanrc
CONTRIBUTING.md
LICENSE.txt
README.md
SECURITY.md
build.gradle Upgrade to JUnit 5.13.4 2025-07-21 13:17:38 +03:00
gradle.properties Next development version (v6.2.10-SNAPSHOT) 2025-07-17 09:55:21 +02:00
gradlew
gradlew.bat
import-into-eclipse.md
import-into-idea.md
settings.gradle

README.md

Spring Framework Build Status Revved up by Develocity

This is the home of the Spring Framework: the foundation for all Spring projects. Collectively the Spring Framework and the family of Spring projects are often referred to simply as "Spring".

Spring provides everything required beyond the Java programming language for creating enterprise applications for a wide range of scenarios and architectures. Please read the Overview section of the reference documentation for a more complete introduction.

Code of Conduct

This project is governed by the Spring Code of Conduct. By participating, you are expected to uphold this code of conduct. Please report unacceptable behavior to spring-code-of-conduct@spring.io.

Access to Binaries

For access to artifacts or a distribution zip, see the Spring Framework Artifacts wiki page.

Documentation

The Spring Framework maintains reference documentation (published and source), GitHub wiki pages, and an API reference. There are also guides and tutorials across Spring projects.

Micro-Benchmarks

See the Micro-Benchmarks wiki page.

Build from Source

See the Build from Source wiki page and the CONTRIBUTING.md file.

Continuous Integration Builds

Information regarding CI builds can be found in the Spring Framework Concourse pipeline documentation.

Stay in Touch

Follow @SpringCentral, @SpringFramework, and its team members on 𝕏. In-depth articles can be found at The Spring Blog, and releases are announced via our releases feed.

License

The Spring Framework is released under version 2.0 of the Apache License.