Add tests for SpringBeanContainer (Hibernate ORM integration) and fix the behavior when requesting named beans #22260
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.
@jhoeller Hi! I think you're the one to ping regarding this part of the code? We've talked previously in #21548.
This PR:
SpringBeanContainer
SpringBeanContainer
would forget to autowire bean properties when a bean is requested by name (org.springframework.orm.jpa.hibernate.HibernateNativeEntityManagerFactorySpringBeanContainerIntegrationTests#testCanRetrieveBeanByNameWithJpaCompliantOptions
was failing)SpringBeanContainer
would simply ignore the name when a bean is requested by name (the testsorg.springframework.orm.jpa.hibernate.HibernateNativeEntityManagerFactorySpringBeanContainerIntegrationTests#testCanRetrieveFallbackBeanByName*
were failing). If it was only about internal Spring behavior, it would be fine, but it also affected how the fallback producer was used. Essentially, whenever a bean name didn't match anything in Spring,SpringBeanContainer
would first try to ignore the name, and if that failed it would callorg.hibernate.resource.beans.spi.BeanInstanceProducer#produceBeanInstance(java.lang.Class<B>)
, not passing the name to the fallback bean producer.Note that the fixes should not affect current setups, because Hibernate ORM currently never requests named beans,. The concept of named beans in ORM SPIs was added with future changes in mind, and is currently being leveraged in Hibernate Search 6 (still in Alpha).