spring IoC源码分析 (2)Resource定位

 2019-10-17 21:33  阅读(1082)
文章分类:Spring boot

先看下BeanFactory的调用过程

public class BeanFactoryTest {
        public static void main(String[] args) {
            ClassPathResource res = new ClassPathResource("beans.xml");
            XmlBeanFactory factory = new XmlBeanFactory(res);
            Object obj = factory.getBean("beanFactory");
            System.out.println(obj.getClass());
        }
    }

beans.xml定义

<?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

        <bean id="beanFactory" class="com.hz.yk.spring.test.BeanFactoryTest"  />
    </beans>

就是简单的定义下自己。

ClassPathResource的构造函数跟进去看,其实就是对本地path和classload进行设置,为下一步做好准备。

public ClassPathResource(String path, ClassLoader classLoader) {
            Assert.notNull(path, "Path must not be null");
            String pathToUse = StringUtils.cleanPath(path);
            if (pathToUse.startsWith("/")) {
                pathToUse = pathToUse.substring(1);
            }
            this.path = pathToUse;
            this.classLoader = (classLoader != null ? classLoader : ClassUtils.getDefaultClassLoader());
        }

先看下ClassPathResource 的类图

20191017100108\_1.png

Resource其实就封装了对文件的定位,并封装成spring定义的访问接口。具体看下getInputStream(),getFile()等方法的实现。

可以看到资源的定位其实挺没花头的,下一节将研究bean的解析


来源:[]()

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> spring IoC源码分析 (2)Resource定位

相关推荐