Browse Source

Expose FactoryBean attribute exception as BeanDefinitionStoreException

Closes gh-33117
pull/33350/head
Juergen Hoeller 2 years ago
parent
commit
61894af0bd
  1. 13
      spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java
  2. 11
      spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java

13
spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java

@ -843,10 +843,17 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac @@ -843,10 +843,17 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
*/
@Override
protected ResolvableType getTypeForFactoryBean(String beanName, RootBeanDefinition mbd, boolean allowInit) {
ResolvableType result;
// Check if the bean definition itself has defined the type with an attribute
ResolvableType result = getTypeForFactoryBeanFromAttributes(mbd);
if (result != ResolvableType.NONE) {
return result;
try {
result = getTypeForFactoryBeanFromAttributes(mbd);
if (result != ResolvableType.NONE) {
return result;
}
}
catch (IllegalArgumentException ex) {
throw new BeanDefinitionStoreException(mbd.getResourceDescription(), beanName, ex.getMessage());
}
// For instance supplied beans, try the target type and bean class immediately

11
spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java

@ -1716,9 +1716,14 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp @@ -1716,9 +1716,14 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp
* @see #getBean(String)
*/
protected ResolvableType getTypeForFactoryBean(String beanName, RootBeanDefinition mbd, boolean allowInit) {
ResolvableType result = getTypeForFactoryBeanFromAttributes(mbd);
if (result != ResolvableType.NONE) {
return result;
try {
ResolvableType result = getTypeForFactoryBeanFromAttributes(mbd);
if (result != ResolvableType.NONE) {
return result;
}
}
catch (IllegalArgumentException ex) {
throw new BeanDefinitionStoreException(mbd.getResourceDescription(), beanName, ex.getMessage());
}
if (allowInit && mbd.isSingleton()) {

Loading…
Cancel
Save