protected Object doCreateBean( ValueDefinition vd){ Object definedValue = vd.getDefinedValue(); if(null == definedValue){ throw new IllegalStateException("The defined value must not be null"); } if(definedValue instanceof BeanReference){ return doGetBeanReferenceInstance((BeanReference)definedValue); }else if(definedValue instanceof BeanDefinitionBase){ return doGetBean((BeanDefinitionBase)definedValue); } throw new IllegalStateException("The value definition must be bean reference or bean definition"); }
protected void initNonLazyBeans() { for(BeanDefinitionBase bd : bds.allBeanDefinitions){ if(!bd.isLazyInit()){ doGetBean(bd); } } }
@Override public boolean tryInitBean(BeanDefinition bd) { if(!bds.allBeanDefinitions.contains(bd)) { throw new IllegalStateException("Not a managed bean " + bd); } if(bd.isInited()) { return false; } doGetBean((BeanDefinitionBase)bd); return true; }
supportsList.add((BeanFactorySupport)doGetBean(bd)); injectorList.add((BeanInjector)doGetBean(bd)); processorList.add((BeanProcessor)doGetBean(bd)); initializableBeans.forEach(bd -> initializableList.add((BeanFactoryInitializable)doGetBean(bd))); this.initializables = initializableList.toArray(new BeanFactoryInitializable[0]); bds.typedFactoryBeans.put(fd.getTargetType(),(FactoryBean)doGetBean(bd));
cache = false; beans.put((T)doGetBean(bd),bd);
public <T> T tryGetBeanExplicitly(Class<? super T> type) throws BeanException { Args.notNull(type, "bean type"); T bean = (T) primaryBeans.get(type); if (null != bean) { return bean; } BeanDefinitionBase bd = findPrimaryBeanDefinition(type); if(null == bd) { return null; } if(!bd.isPrimary()) { return null; } return (T)doGetBean(bd); }
@Override public <T> T tryGetBean(String id) throws BeanException { Args.notEmpty(id,"bean id"); BeanDefinitionBase bd = findBeanOrAliasDefinition(id); if(null != bd){ return (T)doGetBean(bd); } for(BeanFactorySupport support : postSupports) { T bean = (T)support.tryGetBean(id); if(null != bean) { return bean; } } return null; }
throw new BeanDefinitionException("the bean '" + bd.getName() + "' must be singleton, cannot cache the named beans for type '" + type.getName() + "'"); beans.put(bd.getName(), (T)doGetBean(bd));
protected Object doGetBeanReferenceInstance(BeanReference br){ BeanDefinitionBase referenced = findBeanDefinition(br); if(referenced == null){ throw new BeanDefinitionException("The referenced bean not exists : " + br); } br.setTargetBeanDefinition(referenced); Object bean = doGetBean(referenced); if(null == bean) { throw new BeanCreationException("The referenced bean '" + referenced + "' not exists!"); } return bean; }
@Override public <T> T tryGetBean(Class<? super T> type) throws BeanException { Args.notNull(type,"bean type"); T bean = (T)primaryBeans.get(type); if(null != bean){ return bean; } BeanDefinitionBase bd = findPrimaryBeanDefinition(type); if(null != bd){ return (T)doGetBean(bd); } FactoryBean factoryBean = bds.typedFactoryBeans.get(type); if(null != factoryBean){ bean = (T)factoryBean.getBean(beanFactory, type); if(null != bean) { return bean; } } for(BeanFactorySupport support : postSupports) { bean = (T)support.tryGetBean(type); if(null != bean) { return bean; } } return null; }
@Override public <T> T tryGetBean(Class<? super T> type, String name) throws BeanException { Args.notNull(type,"bean type"); Args.notNull(name,"bean name"); BeanDefinitionBase bd = findBeanOrAliasDefinition(type, name); if(null != bd){ return (T)doGetBean(bd); } for(BeanFactorySupport support : postSupports) { T bean = (T)support.tryGetBean(type, name); if(null != bean) { return bean; } } return null; }