Java Spring IOC 容器入门
本文章只是粗粗讲解了一下基本流程,并不涉及更深入的内容
ApplicationContext ac=new ClassPathXmlApplicationContext("Spring.xml");
获取Spring配置文件
接口可以实现多继承 ,但类不行
Public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,MessageSource, ApplicationEventPublisher, ResourcePatternResolver
向下转型为ClassPathXmlApplicationContext 这么个类
那么这个类又是何方神圣?我画了个结构的粗体,但中间很多借口没有标明,(在回中会具体讲解几个借口)
context.pngResourceLoader:这个接口是定义了了两个方法:
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 的构造函数,其构造函数跳转并将输入的字符串转化为数组对象,进入第二个构造函数。
第二个构造函数中,
Super(parent)的函数是调用其父类的方法,具体是 AbstractApplicationContext类的构造函数,
this()中获取了一个ResourcePatternResolver对象,应该是一个接口,它调用的get方法返回的是实现其接口的一个类:PathMatchingResourcePatternResolver
PathMatchingResourcePatternResolver:这个类实现的是一个资源location path匹配到一个或者多个匹配资源。
这个函数是正在调用的函数,setParent()
Parent 是ApplicationContext 类,这个类在Spring中还是比较重要的。这个类在这章Spring基础流程片就不深加了解。这个类我会放在另一章中详细讲解。
这个方法是等到配置文件的信息。
从Assert类中和其在这些代码中出现的频率来说,Spring在各种数据和方法的防范上可以说是非常明显的,逻辑十分清楚。(Assert类是对于各种情况的判断,包括object是否为空等)。
Refresh()方法是启动IOC容器的方法。
其实在IOC容器设计中,比较有名的是ApplicationContext 和BeanFactory这两类。
但预知后事如何,请听下回分解。