Go to file
Sam Brannen 4baad16437 Include repeatable annotation container in MergedAnnotations results
A bug has existed in Spring's MergedAnnotations support since it was
introduced in Spring Framework 5.2. Specifically, if the
MergedAnnotations API is used to search for annotations with "standard
repeatable annotation" support enabled (which is the default), it's
possible to search for a repeatable annotation but not for the
repeatable annotation's container annotation.

The reason is that MergedAnnotationFinder.process(Object, int, Object,
Annotation) does not process the container annotation and instead only
processes the "contained" annotations, which prevents a container
annotation from being included in search results.

In #29685, we fixed a bug that prevented the MergedAnnotations support
from recognizing an annotation as a container if the container
annotation declares attributes other than the required `value`
attribute. As a consequence of that bug fix, since Spring Framework
5.3.25, the MergedAnnotations infrastructure considers such an
annotation a container, and due to the aforementioned bug the container
is no longer processed, which results in a regression in behavior for
annotation searches for such a container annotation.

This commit addresses the original bug as well as the regression by
processing container annotations in addition to the contained
repeatable annotations.

See gh-29685
Closes gh-32731
2024-05-03 12:18:04 +03:00
.github Upgrade to gradle-enterprise-conventions 0.0.17 2024-04-29 13:15:05 +02:00
buildSrc Upgrade to Groovy 4.0.21, Tomcat 10.1.23, Jetty 12.0.8, Netty 4.1.109, Undertow 2.3.13, Checkstyle 10.16 2024-04-29 18:04:25 +02:00
ci Upgrade to gradle-enterprise-conventions 0.0.17 2024-04-29 13:15:05 +02:00
framework-api Polish "Replace deprecated usage of project.buildDir" 2023-12-18 16:24:02 +01:00
framework-bom Guard against new Spring modules in ApiDiff task 2022-07-28 10:51:53 +02:00
framework-docs Use expectBody<Person>() in WebTestClient documentation 2024-05-02 11:07:36 +02:00
framework-platform Upgrade to Groovy 4.0.21, Tomcat 10.1.23, Jetty 12.0.8, Netty 4.1.109, Undertow 2.3.13, Checkstyle 10.16 2024-04-29 18:04:25 +02:00
gradle Upgrade to Gradle 8.7 2024-04-02 18:01:37 +02:00
integration-tests Introduce ClassUtils.isVoidType() utility method 2024-01-30 16:27:34 +01:00
spring-aop Polishing 2024-04-30 15:46:28 +02:00
spring-aspects Polishing 2024-03-05 18:23:13 +01:00
spring-beans Consistently propagate ApplicationStartup to BeanFactory 2024-05-01 18:06:27 +02:00
spring-context Consistently propagate ApplicationStartup to BeanFactory 2024-05-01 18:06:27 +02:00
spring-context-indexer Polish 2024-01-17 18:41:15 +01:00
spring-context-support Refine null-safety in more modules 2024-03-26 15:39:18 +01:00
spring-core Include repeatable annotation container in MergedAnnotations results 2024-05-03 12:18:04 +03:00
spring-core-test Update copyright year of changed files 2024-04-23 15:32:59 +02:00
spring-expression Refine null-safety 2024-04-05 14:30:50 +02:00
spring-instrument Ensure all packages declare package-info.java with null-safety annotations 2023-03-10 17:33:52 +01:00
spring-jcl Log4jLog re-resolves ExtendedLogger on deserialization 2023-11-09 11:46:22 +01:00
spring-jdbc Polish 2024-04-23 15:31:48 +02:00
spring-jms Rethrow unhandled JMS listener exceptions 2024-04-18 21:44:44 +02:00
spring-messaging Review usage of BindingReflectionHintsRegistrar#registerReflectionHints 2024-05-02 16:53:59 +02:00
spring-orm Refine null-safety in more modules 2024-03-26 15:39:18 +01:00
spring-oxm Consistently use class literals for primitive types 2024-01-30 15:26:12 +01:00
spring-r2dbc Refine null-safety in more modules 2024-03-26 09:46:34 +01:00
spring-test Detect target of factory method with AOT 2024-04-22 15:13:56 +02:00
spring-tx Relax scope of DataIntegrityViolationException 2024-04-22 14:49:17 +02:00
spring-web Review usage of BindingReflectionHintsRegistrar#registerReflectionHints 2024-05-02 16:53:59 +02:00
spring-webflux Polishing 2024-04-23 16:07:09 +02:00
spring-webmvc Polishing 2024-04-24 13:42:02 +02:00
spring-websocket Skip close lock if acquired by other thread already 2024-04-23 16:06:48 +02:00
src Apply UnnecessarySemicolonInEnumeration Checkstyle module 2024-03-22 16:30:06 +01:00
.editorconfig Add EditorConfig 2017-06-12 08:07:54 +02:00
.gitattributes Ensure line endings for binary files are not modified in Git 2019-10-18 11:56:18 +02:00
.gitignore Add `/framework-*/build` to .gitignore 2023-09-02 18:28:24 +02:00
.sdkmanrc Upgrade to Java 17.0.11 2024-04-22 12:13:01 +02:00
CODE_OF_CONDUCT.adoc URL Cleanup 2019-03-21 15:08:55 -05:00
CONTRIBUTING.md Update regarding Antora, etc. 2023-07-07 11:18:43 +02:00
LICENSE.txt Add LICENSE.txt file 2019-08-20 22:01:12 +02:00
README.md Move CI and snapshot deployment to GitHub actions 2024-03-14 15:01:26 +01:00
SECURITY.md Mention JAR signing key in SECURITY.md 2023-03-17 22:32:33 +01:00
build.gradle Stop linking to Websphere's Javadoc 2024-04-05 15:57:58 +02:00
gradle.properties Next development version (v6.1.7-SNAPSHOT) 2024-04-11 08:26:17 +00:00
gradlew Upgrade to Gradle 8.4 2023-10-08 16:08:29 +02:00
gradlew.bat Upgrade to Gradle 8.6 2024-02-03 11:38:56 +01:00
import-into-eclipse.md Remove Groovy from "Eclipse/STS Project Import Guide" 2022-01-21 11:27:09 +01:00
import-into-idea.md Fix links in Javadoc and reference docs 2022-09-14 17:00:11 +02:00
settings.gradle Fix build warnings 2024-04-30 19:10:31 +02:00
update_copyright_headers.sh Use correct Kotlin file extension in update_copyright_headers.sh 2023-02-19 13:41:36 +01:00

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@pivotal.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.