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); } }
@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); }
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); } }
@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); }
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); } }
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); } }
/** * Resolves a Spring managed bean with the given {@link Class} type from the Spring {@link BeanFactory}. * * It is assumed that the given typed bean is the only bean of this {@link Class} type. If more than 1 bean * of the given {@link Class} type is found, then the Spring {@link BeanFactory} will throw * a {@link org.springframework.beans.factory.NoUniqueBeanDefinitionException}. * * If the {@link BeanFactory} is an instance of {@link AutowireCapableBeanFactory}, then the returned bean * will also be configured. * * @param <T> {@link Class} type of the registered Spring managed bean. * @param beanType required {@link Class} type of the registered Spring managed bean. * @return a Spring managed bean instance for the given, required {@link Class} type, or {@literal null} * if no bean instance of the given, required {@link Class} type could be found. * @throws BeansException if the Spring manage bean of the required {@link Class} type could not be resolved. * @see #getBeanFactory() */ @SuppressWarnings("unchecked") protected <T> T resolveBean(Class<T> beanType) { BeanFactory beanFactory = getBeanFactory(); if (beanFactory instanceof AutowireCapableBeanFactory) { AutowireCapableBeanFactory autowiringBeanFactory = (AutowireCapableBeanFactory) beanFactory; NamedBeanHolder<T> beanHolder = autowiringBeanFactory.resolveNamedBean(beanType); return (T) autowiringBeanFactory.configureBean(beanHolder.getBeanInstance(), beanHolder.getBeanName()); } else { return beanFactory.getBean(beanType); } }
/** * Resolves a Spring managed bean with the given {@link Class} type from the Spring {@link BeanFactory}. * * It is assumed that the given typed bean is the only bean of this {@link Class} type. If more than 1 bean * of the given {@link Class} type is found, then the Spring {@link BeanFactory} will throw * a {@link org.springframework.beans.factory.NoUniqueBeanDefinitionException}. * * If the {@link BeanFactory} is an instance of {@link AutowireCapableBeanFactory}, then the returned bean * will also be configured. * * @param <T> {@link Class} type of the registered Spring managed bean. * @param beanType required {@link Class} type of the registered Spring managed bean. * @return a Spring managed bean instance for the given, required {@link Class} type, or {@literal null} * if no bean instance of the given, required {@link Class} type could be found. * @throws BeansException if the Spring manage bean of the required {@link Class} type could not be resolved. * @see #getBeanFactory() */ @SuppressWarnings("unchecked") protected <T> T resolveBean(Class<T> beanType) { BeanFactory beanFactory = getBeanFactory(); if (beanFactory instanceof AutowireCapableBeanFactory) { AutowireCapableBeanFactory autowiringBeanFactory = (AutowireCapableBeanFactory) beanFactory; NamedBeanHolder<T> beanHolder = autowiringBeanFactory.resolveNamedBean(beanType); return (T) autowiringBeanFactory.configureBean(beanHolder.getBeanInstance(), beanHolder.getBeanName()); } else { return beanFactory.getBean(beanType); } }