首先BeansConfigurationHelper 中调用setBean()方法:
AbstractEngineConfiguration engineConfiguration = (AbstractEngineConfiguration) beanFactory.getBean(beanName);
engineConfiguration.setBeans(new SpringBeanFactoryProxyMap(beanFactory));
public class BeansConfigurationHelper {
public static AbstractEngineConfiguration parseEngineConfiguration(Resource springResource, String beanName) {
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
XmlBeanDefinitionReader xmlBeanDefinitionReader = new XmlBeanDefinitionReader(beanFactory);
xmlBeanDefinitionReader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_XSD);
xmlBeanDefinitionReader.loadBeanDefinitions(springResource);
AbstractEngineConfiguration engineConfiguration = (AbstractEngineConfiguration) beanFactory.getBean(beanName);
engineConfiguration.setBeans(new SpringBeanFactoryProxyMap(beanFactory));
return engineConfiguration;
}
public static AbstractEngineConfiguration parseEngineConfigurationFromInputStream(InputStream inputStream, String beanName) {
Resource springResource = new InputStreamResource(inputStream);
return parseEngineConfiguration(springResource, beanName);
}
public static AbstractEngineConfiguration parseEngineConfigurationFromResource(String resource, String beanName) {
Resource springResource = new ClassPathResource(resource);
return parseEngineConfiguration(springResource, beanName);
}
}
看setBean的具体执行,很简单:
public AbstractEngineConfiguration setBeans(Map<Object, Object> beans) {
this.beans = beans;
return this;
}
//如果bean为空直接new一个
public void initBeans() {
if (beans == null) {
beans = new HashMap<>();
}
}