-
Notifications
You must be signed in to change notification settings - Fork 38.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Cache CGLIB proxy classes properly again
The introduction of AdvisedSupport.AdvisorKeyEntry in Spring Framework 6.0.10 resulted in a regression regarding caching of CGLIB generated proxy classes. Specifically, equality checks for the proxy class cache became based partially on identity rather than equivalence. For example, if an ApplicationContext was configured to create a class-based @transactional proxy, a second attempt to create the ApplicationContext resulted in a duplicate proxy class for the same @transactional component. On the JVM this went unnoticed; however, when running Spring integration tests within a native image, if a test made use of @DirtiesContext, a second attempt to create the test ApplicationContext resulted in an exception stating, "CGLIB runtime enhancement not supported on native image." This is because Test AOT processing only refreshes a test ApplicationContext once, and the duplicate CGLIB proxy classes are only requested in subsequent refreshes of the same ApplicationContext which means that duplicate proxy classes are not tracked during AOT processing and consequently not included in a native image. This commit addresses this regression as follows. - AdvisedSupport.AdvisorKeyEntry is now based on the toString() representations of the ClassFilter and MethodMatcher in the corresponding Pointcut instead of the filter's and matcher's identities. - Due to the above changes to AdvisorKeyEntry, ClassFilter and MethodMatcher implementations are now required to implement equals(), hashCode(), AND toString(). - Consequently, the following now include proper equals(), hashCode(), and toString() implementations. - CacheOperationSourcePointcut - TransactionAttributeSourcePointcut - PerTargetInstantiationModelPointcut Closes gh-31238
- Loading branch information
Showing
9 changed files
with
172 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters