fix: only construct one object mapper instance per jvm #1149
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
At the moment there are two different instances of the object mapper used internally. An instance created by the dependency injection system, and an instance constructed specifically during the static initialization of the
DefaultObjectMapper
class.Modification
Bind the specifically created instance into the boot injection layer when it's created for the first time. For this reason, this PR adds a new interface (
BootLayerConfigurator
) that can be used in combination with the SPI to configure the boot layer at the first creation. This interface is only used for the mapper instance at the moment, but might be nice in the future for other changes as well.Result
The same object mapper instance is now passed to users which are using the static accessor field, as well as users that are using dependency injection. This also fixes issues with serializers that are only bound to one of these two instances.
Other context
Fixes #1112