三 spring源码解析--- Bean解析接口结构分析

解析Bean是经过定义抽象的bean reader来解析,结构图以下java


1.AbstractBeanDefinitionReader
bean definition reader的抽象基类,提供了bean factory经常使用的属性以及加载bean class的classloader
spring

public abstract class AbstractBeanDefinitionReader implements EnvironmentCapable, BeanDefinitionReader {
	/** Logger available to subclasses */
	protected final Log logger = LogFactory.getLog(getClass());
	private final BeanDefinitionRegistry registry;
	private ResourceLoader resourceLoader;
	private ClassLoader beanClassLoader;
	private Environment environment;
	private BeanNameGenerator beanNameGenerator = new DefaultBeanNameGenerator();
spring ioc 容器在加载资源后,使用该模块解析Bean,在源码中是经过AbstractXmlApplicationContext类中的loadBeanDefinitions方法完成的;

@Override
	protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws BeansException, IOException {
		// Create a new XmlBeanDefinitionReader for the given BeanFactory.
		XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(beanFactory);
		// Configure the bean definition reader with this context's
		// resource loading environment.
		beanDefinitionReader.setEnvironment(this.getEnvironment());
		beanDefinitionReader.setResourceLoader(this);
		beanDefinitionReader.setEntityResolver(new ResourceEntityResolver(this));
		// Allow a subclass to provide custom initialization of the reader,
		// then proceed with actually loading the bean definitions.
		initBeanDefinitionReader(beanDefinitionReader);
		loadBeanDefinitions(beanDefinitionReader);
	}
spring ioc 就是在该方法中建立了一个XmlBeanDefinitionReader负责去读取并解析Bean;
相关文章
相关标签/搜索