mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-08-29 03:06:45 +08:00
Previously, actuator endpoints were registered with Jersey upon injection of the ResourceConfig bean into a registrar class rather than using a ResourceConfigCustomizer. This was done to fix a problem when running the Actuator on a separate port where the main application context's customizers were also applied to the management context, breaking the singleton contract for those resources. This approach meant that the registration could be performed at any point after the ResourceConfig had been created. When Jersey's configured as a Filter this resulted in the registration failing as the attempt was being made after the Filter lifecyle callbacks which make the ResourceConfig immutable. This commit reworks the endpoint registration to be performed using a ManagementContextResourceConfigCustomizer, a resource config customizer that's only applied to the ResourceConfig that's used by the Actuator. When there's a separate management context, this ResourceConfig is created by the Actuator's auto-configuration and the management context resource config customizers are applied to it during its creation. The main application's customizers are not applied. When the actuator is using the same context as the main application, this ResourceConfig is created by the main application. In this case a ResourceConfigCustomizer is defined that delegates to all ManagementContextResourceConfigCustomizers, allowing them to register the actuator endpoints with the main ResourceConfig. Fixes gh-25262 |
||
---|---|---|
.. | ||
src | ||
build.gradle |