啃Spring源码的开始
千里之行,始于足下
N年没写过东西了,想起来大学的时候还是个文艺青年,如今一晃工作也一年多了orz
真的不想在此荒废,于是开始痛下决心已啃一啃望而生畏的传说中的spring源码
好吧,上来不得不贴一段已经废弃调的XmlBeanFactory实现类,虽然已经废弃,但是还是从这最开始看起好了,毕竟当初第一次开始学spring的时候还是各种配置xml
XmlBeanFactory继承自DefaultListableBeanFactory,是一个比较基本的容器实现。
1.首先XmlFactoryBean有一个成员变量XmlBeanDefinitionReader,这个对象可以从资源Xml文件中读取BeanDefinition信息,从而构造出定义的bean。
2。构造方法需要Resource对象作为参数,然后调用reder的loadBeanDefinitions完成从resource中加载BeanDefinition。
@Deprecated
public class XmlBeanFactory extends DefaultListableBeanFactory {
//1
private final XmlBeanDefinitionReader reader;
//调第二个构造方法
public XmlBeanFactory(Resource resource) throws BeansException {
this(resource, (BeanFactory)null);
}
//2构造方法
public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException {
super(parentBeanFactory);
this.reader = new XmlBeanDefinitionReader(this);
this.reader.loadBeanDefinitions(resource);
}
}
DefaultListableBeanFactory是一个很重要的Ioc实现
也可以用DefaultListableBeanFactory来实现
ClassPathResource res = new ClassPathResource(bean.xml);
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
reader.loadBeanDefinitions(res);
这样就可以通过factory对象使用DefaultListableBeanFactory这个IoC容器。