spring最初的形态是存在于xml配置文件中的,使用的时候bean实例又是存在于内存中的,今儿聊聊spring对于xml文件的加载,也就是spring怎么将bean从xml搬到内存中的。
1.spring管理使用bean无非就是这几步
第一步:读取配置文件***.xml。
第二步:根据配置文件找到对应的bean配置,并将其实例化。
第三步:调用实例化后的实例。
2.先来看读取配置文件
通常情况下我们通过BeanFactory f=new XmlBeanFactory(new ClassPathResource("*****.xml")来读取配置文件。
可以看到,先是通过调用ClassPathResource来构造Resource资源文件的实例对象,构造完了之后,就可以通过Resource提供的服务来进行操作了。
1.通过Resource类对配置文件进行封装
首先,ClassPathResource继承了InputStreamSource类,它只有一个方法getInputStream(),可以返回任何能封装InputStream的类,如File、classpath下的资源。ClassPathResource执行的时候,先判断当前路径下资源的存在性、可读性、是否处于打开状态,以及获取其他的资源属性。当ClassPathResource执行完毕之后,我们就会得到一个Resource对象,这就是一个输入流,有了它,便可以对所有资源文件进行统一处理了。
2.对封装的资源文件进行读取
public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException {
super(parentBeanFactory);
this.reader.loadBeanDefinitions(resource);
}