List of usage examples for org.springframework.beans.factory FactoryBean getObjectType
@Nullable Class<?> getObjectType();
From source file:com.otterca.common.crypto.X509CertificateBuilderFactoryTest.java
/** * Test factory bean./*from w w w. ja v a 2 s. co m*/ * * @throws Exception */ @Test public void testFactory() throws Exception { FactoryBean<X509CertificateBuilder> factory = new X509CertificateBuilderFactory(); assertEquals(factory.getObjectType(), X509CertificateBuilder.class); assertFalse(factory.isSingleton()); Object obj = factory.getObject(); assertTrue(obj instanceof X509CertificateBuilder); }
From source file:org.springframework.beans.factory.support.AbstractBeanFactory.java
public Class getType(String name) throws NoSuchBeanDefinitionException { String beanName = transformedBeanName(name); try {// w w w . j a v a 2 s . c o m Class beanClass = null; // Check manually registered singletons. Object beanInstance = null; synchronized (this.singletonCache) { beanInstance = this.singletonCache.get(beanName); } if (beanInstance != null) { beanClass = beanInstance.getClass(); } else { // No singleton instance found -> check bean definition. if (getParentBeanFactory() != null && !containsBeanDefinition(beanName)) { // No bean definition found in this factory -> delegate to parent. return getParentBeanFactory().getType(name); } RootBeanDefinition mergedBeanDefinition = getMergedBeanDefinition(beanName, false); // Delegate to getTypeForFactoryMethod in case of factory method. if (mergedBeanDefinition.getFactoryMethodName() != null) { return getTypeForFactoryMethod(name, mergedBeanDefinition); } // Return "undeterminable" for beans without class. if (!mergedBeanDefinition.hasBeanClass()) { return null; } beanClass = mergedBeanDefinition.getBeanClass(); } // Check bean class whether we're dealing with a FactoryBean. if (FactoryBean.class.isAssignableFrom(beanClass) && !isFactoryDereference(name)) { // If it's a FactoryBean, we want to look at what it creates, not the factory class. FactoryBean factoryBean = (FactoryBean) getBean(FACTORY_BEAN_PREFIX + beanName); return factoryBean.getObjectType(); } return beanClass; } catch (BeanCreationException ex) { if (ex.contains(BeanCurrentlyInCreationException.class) || ex.contains(FactoryBeanNotInitializedException.class)) { // Can only happen when checking a FactoryBean. logger.debug("Ignoring BeanCreationException on FactoryBean type check", ex); return null; } throw ex; } }