Add tests for SpringBeanContainer (Hibernate ORM integration) and fix the behavior when requesting named beans (#22260)
* Add integration tests for SpringBeanContainer (Hibernate ORM integration)
* Autowire bean properties of beans retrieved by name in SpringBeanContainer
* Add integration tests for fallback cases in SpringBeanContainer (Hibernate ORM integration)
* Fix SpringBeanContainer incorrectly losing the bean name when calling the fallback producer
(cherry picked from commit 00855c4f5f)
This commit is contained in:
committed by
Juergen Hoeller
parent
165d2511b9
commit
17caac8f1f
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -116,10 +116,6 @@ public final class SpringBeanContainer implements BeanContainer {
|
||||
public <B> ContainedBean<B> getBean(
|
||||
String name, Class<B> beanType, LifecycleOptions lifecycleOptions, BeanInstanceProducer fallbackProducer) {
|
||||
|
||||
if (!this.beanFactory.containsBean(name)) {
|
||||
return getBean(beanType, lifecycleOptions, fallbackProducer);
|
||||
}
|
||||
|
||||
SpringContainedBean<?> bean;
|
||||
if (lifecycleOptions.canUseCachedReferences()) {
|
||||
bean = this.beanCache.get(name);
|
||||
@@ -169,6 +165,7 @@ public final class SpringBeanContainer implements BeanContainer {
|
||||
try {
|
||||
if (lifecycleOptions.useJpaCompliantCreation()) {
|
||||
Object bean = this.beanFactory.autowire(beanType, AutowireCapableBeanFactory.AUTOWIRE_CONSTRUCTOR, false);
|
||||
this.beanFactory.autowireBeanProperties(bean, AutowireCapableBeanFactory.AUTOWIRE_NO, false);
|
||||
this.beanFactory.applyBeanPropertyValues(bean, name);
|
||||
bean = this.beanFactory.initializeBean(bean, name);
|
||||
return new SpringContainedBean<>(bean, beanInstance -> this.beanFactory.destroyBean(name, beanInstance));
|
||||
|
||||
Reference in New Issue
Block a user