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

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】

先看下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) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » spring IoC源码分析 (2)Resource定位

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏