Java源码解析程序员首页投稿(暂停使用,暂停投稿)

Java Spring IOC 容器入门

2017-03-01  本文已影响149人  遗忘的流逝

本文章只是粗粗讲解了一下基本流程,并不涉及更深入的内容

ApplicationContext ac=new ClassPathXmlApplicationContext("Spring.xml");
获取Spring配置文件
接口可以实现多继承 ,但类不行

Public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,MessageSource, ApplicationEventPublisher, ResourcePatternResolver

向下转型为ClassPathXmlApplicationContext 这么个类

那么这个类又是何方神圣?我画了个结构的粗体,但中间很多借口没有标明,(在回中会具体讲解几个借口)

context.png

ResourceLoader:这个接口是定义了了两个方法:
Resource getResource(String location);(Resource 是一个接口,应该是对于inputstream resource 资源的一系列操作接口)
ClassLoader getClassLoader();
Bean定义资源文件定位由ResourceLoader通过统一的Resource接口来完成,Resource接口将各种形式的Bean定义资源文件封装成统一的、IoC容器可进行载入操作的对象。

ResourceUtils 这个类在图中并没有标明,它是Spring一系列资源的URL 的字符定义。(“file:”,zip等)。

DefaultResourceLoader 这个类其实是通过获取ClassLoader以及资源URL进行资源获取,在之前的代码中是用于Spring配置文件的加载。

这段代码初始化的时候,是调用ClassPathXmlApplicationContext 的构造函数,其构造函数跳转并将输入的字符串转化为数组对象,进入第二个构造函数。
第二个构造函数中,

Paste_Image.png

Super(parent)的函数是调用其父类的方法,具体是 AbstractApplicationContext类的构造函数,
this()中获取了一个ResourcePatternResolver对象,应该是一个接口,它调用的get方法返回的是实现其接口的一个类:PathMatchingResourcePatternResolver
PathMatchingResourcePatternResolver:这个类实现的是一个资源location path匹配到一个或者多个匹配资源。

Paste_Image.png

这个函数是正在调用的函数,setParent()
Parent 是ApplicationContext 类,这个类在Spring中还是比较重要的。这个类在这章Spring基础流程片就不深加了解。这个类我会放在另一章中详细讲解。

Paste_Image.png

这个方法是等到配置文件的信息。
从Assert类中和其在这些代码中出现的频率来说,Spring在各种数据和方法的防范上可以说是非常明显的,逻辑十分清楚。(Assert类是对于各种情况的判断,包括object是否为空等)。
Refresh()方法是启动IOC容器的方法。
其实在IOC容器设计中,比较有名的是ApplicationContext 和BeanFactory这两类。
但预知后事如何,请听下回分解。

上一篇下一篇

猜你喜欢

热点阅读