类org.springframework.beans.factory.config.NamedBeanHolder源码实例Demo

下面列出了怎么用org.springframework.beans.factory.config.NamedBeanHolder的API类实例代码及写法,或者点击链接到github查看源代码。

private <T> T resolveSchedulerBean(BeanFactory beanFactory, Class<T> schedulerType, boolean byName) {
	if (byName) {
		T scheduler = beanFactory.getBean(DEFAULT_TASK_SCHEDULER_BEAN_NAME, schedulerType);
		if (this.beanName != null && this.beanFactory instanceof ConfigurableBeanFactory) {
			((ConfigurableBeanFactory) this.beanFactory).registerDependentBean(
					DEFAULT_TASK_SCHEDULER_BEAN_NAME, this.beanName);
		}
		return scheduler;
	}
	else if (beanFactory instanceof AutowireCapableBeanFactory) {
		NamedBeanHolder<T> holder = ((AutowireCapableBeanFactory) beanFactory).resolveNamedBean(schedulerType);
		if (this.beanName != null && beanFactory instanceof ConfigurableBeanFactory) {
			((ConfigurableBeanFactory) beanFactory).registerDependentBean(holder.getBeanName(), this.beanName);
		}
		return holder.getBeanInstance();
	}
	else {
		return beanFactory.getBean(schedulerType);
	}
}
 
/**
 * Find a single default EntityManagerFactory in the Spring application context.
 * @return the default EntityManagerFactory
 * @throws NoSuchBeanDefinitionException if there is no single EntityManagerFactory in the context
 */
protected EntityManagerFactory findDefaultEntityManagerFactory(@Nullable String requestingBeanName)
		throws NoSuchBeanDefinitionException {

	Assert.state(this.beanFactory != null, "ListableBeanFactory required for EntityManagerFactory bean lookup");

	if (this.beanFactory instanceof ConfigurableListableBeanFactory) {
		// Fancy variant with dependency registration
		ConfigurableListableBeanFactory clbf = (ConfigurableListableBeanFactory) this.beanFactory;
		NamedBeanHolder<EntityManagerFactory> emfHolder = clbf.resolveNamedBean(EntityManagerFactory.class);
		if (requestingBeanName != null) {
			clbf.registerDependentBean(emfHolder.getBeanName(), requestingBeanName);
		}
		return emfHolder.getBeanInstance();
	}
	else {
		// Plain variant: just find a default bean
		return this.beanFactory.getBean(EntityManagerFactory.class);
	}
}
 
@Nullable
private <T> T resolveBean(ResolvableType requiredType, @Nullable Object[] args, boolean nonUniqueAsNull) {
	NamedBeanHolder<T> namedBean = resolveNamedBean(requiredType, args, nonUniqueAsNull);
	if (namedBean != null) {
		return namedBean.getBeanInstance();
	}
	BeanFactory parent = getParentBeanFactory();
	if (parent instanceof DefaultListableBeanFactory) {
		return ((DefaultListableBeanFactory) parent).resolveBean(requiredType, args, nonUniqueAsNull);
	}
	else if (parent != null) {
		ObjectProvider<T> parentProvider = parent.getBeanProvider(requiredType);
		if (args != null) {
			return parentProvider.getObject(args);
		}
		else {
			return (nonUniqueAsNull ? parentProvider.getIfUnique() : parentProvider.getIfAvailable());
		}
	}
	return null;
}
 
private <T> T resolveSchedulerBean(BeanFactory beanFactory, Class<T> schedulerType, boolean byName) {
	if (byName) {
		T scheduler = beanFactory.getBean(DEFAULT_TASK_SCHEDULER_BEAN_NAME, schedulerType);
		if (this.beanName != null && this.beanFactory instanceof ConfigurableBeanFactory) {
			((ConfigurableBeanFactory) this.beanFactory).registerDependentBean(
					DEFAULT_TASK_SCHEDULER_BEAN_NAME, this.beanName);
		}
		return scheduler;
	}
	else if (beanFactory instanceof AutowireCapableBeanFactory) {
		NamedBeanHolder<T> holder = ((AutowireCapableBeanFactory) beanFactory).resolveNamedBean(schedulerType);
		if (this.beanName != null && beanFactory instanceof ConfigurableBeanFactory) {
			((ConfigurableBeanFactory) beanFactory).registerDependentBean(holder.getBeanName(), this.beanName);
		}
		return holder.getBeanInstance();
	}
	else {
		return beanFactory.getBean(schedulerType);
	}
}
 
/**
 * Find a single default EntityManagerFactory in the Spring application context.
 * @return the default EntityManagerFactory
 * @throws NoSuchBeanDefinitionException if there is no single EntityManagerFactory in the context
 */
protected EntityManagerFactory findDefaultEntityManagerFactory(@Nullable String requestingBeanName)
		throws NoSuchBeanDefinitionException {

	Assert.state(this.beanFactory != null, "ListableBeanFactory required for EntityManagerFactory bean lookup");

	if (this.beanFactory instanceof ConfigurableListableBeanFactory) {
		// Fancy variant with dependency registration
		ConfigurableListableBeanFactory clbf = (ConfigurableListableBeanFactory) this.beanFactory;
		NamedBeanHolder<EntityManagerFactory> emfHolder = clbf.resolveNamedBean(EntityManagerFactory.class);
		if (requestingBeanName != null) {
			clbf.registerDependentBean(emfHolder.getBeanName(), requestingBeanName);
		}
		return emfHolder.getBeanInstance();
	}
	else {
		// Plain variant: just find a default bean
		return this.beanFactory.getBean(EntityManagerFactory.class);
	}
}
 
@Nullable
private <T> T resolveBean(ResolvableType requiredType, @Nullable Object[] args, boolean nonUniqueAsNull) {
	NamedBeanHolder<T> namedBean = resolveNamedBean(requiredType, args, nonUniqueAsNull);
	if (namedBean != null) {
		return namedBean.getBeanInstance();
	}
	BeanFactory parent = getParentBeanFactory();
	if (parent instanceof DefaultListableBeanFactory) {
		return ((DefaultListableBeanFactory) parent).resolveBean(requiredType, args, nonUniqueAsNull);
	}
	else if (parent != null) {
		ObjectProvider<T> parentProvider = parent.getBeanProvider(requiredType);
		if (args != null) {
			return parentProvider.getObject(args);
		}
		else {
			return (nonUniqueAsNull ? parentProvider.getIfUnique() : parentProvider.getIfAvailable());
		}
	}
	return null;
}
 
private <T> T resolveSchedulerBean(Class<T> schedulerType, boolean byName) {
	if (byName) {
		T scheduler = this.beanFactory.getBean(DEFAULT_TASK_SCHEDULER_BEAN_NAME, schedulerType);
		if (this.beanFactory instanceof ConfigurableBeanFactory) {
			((ConfigurableBeanFactory) this.beanFactory).registerDependentBean(
					DEFAULT_TASK_SCHEDULER_BEAN_NAME, this.beanName);
		}
		return scheduler;
	}
	else if (this.beanFactory instanceof AutowireCapableBeanFactory) {
		NamedBeanHolder<T> holder = ((AutowireCapableBeanFactory) this.beanFactory).resolveNamedBean(schedulerType);
		if (this.beanFactory instanceof ConfigurableBeanFactory) {
			((ConfigurableBeanFactory) this.beanFactory).registerDependentBean(
					holder.getBeanName(), this.beanName);
		}
		return holder.getBeanInstance();
	}
	else {
		return this.beanFactory.getBean(schedulerType);
	}
}
 
/**
 * Find a single default EntityManagerFactory in the Spring application context.
 * @return the default EntityManagerFactory
 * @throws NoSuchBeanDefinitionException if there is no single EntityManagerFactory in the context
 */
protected EntityManagerFactory findDefaultEntityManagerFactory(String requestingBeanName)
		throws NoSuchBeanDefinitionException {

	if (this.beanFactory instanceof ConfigurableListableBeanFactory) {
		// Fancy variant with dependency registration
		ConfigurableListableBeanFactory clbf = (ConfigurableListableBeanFactory) this.beanFactory;
		NamedBeanHolder<EntityManagerFactory> emfHolder = clbf.resolveNamedBean(EntityManagerFactory.class);
		clbf.registerDependentBean(emfHolder.getBeanName(), requestingBeanName);
		return emfHolder.getBeanInstance();
	}
	else {
		// Plain variant: just find a default bean
		return this.beanFactory.getBean(EntityManagerFactory.class);
	}
}
 
@Override
public <T> NamedBeanHolder<T> resolveNamedBean(Class<T> requiredType) throws BeansException {
	NamedBeanHolder<T> namedBean = resolveNamedBean(ResolvableType.forRawClass(requiredType), null, false);
	if (namedBean != null) {
		return namedBean;
	}
	BeanFactory parent = getParentBeanFactory();
	if (parent instanceof AutowireCapableBeanFactory) {
		return ((AutowireCapableBeanFactory) parent).resolveNamedBean(requiredType);
	}
	throw new NoSuchBeanDefinitionException(requiredType);
}
 
@Override
public <T> NamedBeanHolder<T> resolveNamedBean(Class<T> requiredType) throws BeansException {
	NamedBeanHolder<T> namedBean = resolveNamedBean(ResolvableType.forRawClass(requiredType), null, false);
	if (namedBean != null) {
		return namedBean;
	}
	BeanFactory parent = getParentBeanFactory();
	if (parent instanceof AutowireCapableBeanFactory) {
		return ((AutowireCapableBeanFactory) parent).resolveNamedBean(requiredType);
	}
	throw new NoSuchBeanDefinitionException(requiredType);
}
 
源代码11 项目: lams   文件: DefaultListableBeanFactory.java
@Override
public <T> T getBean(Class<T> requiredType, Object... args) throws BeansException {
	NamedBeanHolder<T> namedBean = resolveNamedBean(requiredType, args);
	if (namedBean != null) {
		return namedBean.getBeanInstance();
	}
	BeanFactory parent = getParentBeanFactory();
	if (parent != null) {
		return parent.getBean(requiredType, args);
	}
	throw new NoSuchBeanDefinitionException(requiredType);
}
 
源代码12 项目: lams   文件: DefaultListableBeanFactory.java
@Override
public <T> NamedBeanHolder<T> resolveNamedBean(Class<T> requiredType) throws BeansException {
	NamedBeanHolder<T> namedBean = resolveNamedBean(requiredType, (Object[]) null);
	if (namedBean != null) {
		return namedBean;
	}
	BeanFactory parent = getParentBeanFactory();
	if (parent instanceof AutowireCapableBeanFactory) {
		return ((AutowireCapableBeanFactory) parent).resolveNamedBean(requiredType);
	}
	throw new NoSuchBeanDefinitionException(requiredType);
}
 
源代码13 项目: bugsnag-java   文件: ScheduledTaskBeanLocator.java
private <T> T resolveSchedulerBeanByType(Class<T> schedulerType) {
    if (this.beanFactory instanceof AutowireCapableBeanFactory) {
        AutowireCapableBeanFactory factory = (AutowireCapableBeanFactory) this.beanFactory;
        NamedBeanHolder<T> holder = factory.resolveNamedBean(schedulerType);
        return holder.getBeanInstance();
    } else {
        return this.beanFactory.getBean(schedulerType);
    }
}
 
@Override
public <T> NamedBeanHolder<T> resolveNamedBean(Class<T> requiredType) throws BeansException {
	throw new UnsupportedOperationException("Dependency resolution not supported");
}
 
@Override
public <T> NamedBeanHolder<T> resolveNamedBean(Class<T> requiredType) throws BeansException {
	throw new UnsupportedOperationException("Dependency resolution not supported");
}
 
 类方法
 同包方法