spring学习-FileSystemXmlApplicationContext与DefaultListableBeanFactory

FileSystemXmlApplicationContext的接口关系


一:基类AbstractApplicationContext继承DefaultResourceLoader,实现ConfigurableApplicationContext,DisposableBean,实现refresh,开始启动容器

1.1:DefaultResourceLoader,是ResourceLoader的默认实现类,用于加载资源,核心源码

其中getResourceByPath是核心方法,当location不是URL模式和ClassPath模式时会使用它,他的默认方法是创建ClassPathContextResource,但它通常会在子类中根据实际情况重写。

1.2DisposableBean的主要作用是定义bean的销毁前操作,只有一个简单的destroy方法。注释1

1.3configurableApplicationContext 与WebApplicationContext一样,是最常用容器接口,refresh方法为容器启动的入口,其接口关系如下图所示

1.3.1 lifecycle接口中只有三个方法,start,stop,isrunning。实现此接口能保证srping在启动容器之后会调用start。结束时调用stop,期间能够轮询

1.3.2Closeable,继承与AutoCloseable,其主要功能是使try语句能够自动执行资源关闭。(只支持jdk1.7以后)

1.3.2ApplicationContext。 这是一个spring的核心接口。他继承于ApplicationEventPublisher(支持事件监听功能,使用了设计模式中的观察者模式。注释2),EnvironmentCapable(注释3),ResourcePatternResolver(继承于ResourceLoader,为了让用户自定义资源加载方式),MessageSource(用于获取国际化资源),HierarchicalBeanFactory(支持获取双亲容器),ListableBeanFactory(继承于beanFactory,该为最原始容器,对容器的基本功能进行简单拓展)

2,AbstractRefreshableApplicationContext,实现了父类中的refreshBeanFactory并创建了DefaultListableBeanFactory,完成资源的加载,与之相同的还有GenericApplicationContext

3AbstractRefreshableConfigApplicationContext,对传入的locations进行解析,核心方法为

4,AbstractXmlApplicationContext完成了对资源的具体加载,文件的形式有很多,此处很明显是加载xml文件。还有很多其他不同的子类实现,

5.FileSystemXmlApplicationContext提供各种构造器,并且重写继承于DefaultResourceLoader的getResourceByPath


DefaultListableBeanFactory的继承关系如下图


1.1 AbstractBeanFactory继承于FactoryBeanRegistrySupport,并且实现ConfigurableBeanFactory接口

1.1.1FactoryBeanRegistrySupport添加工厂方式实现beanfactory的支持。其中继承了SimpleAliasRegistry(实现了AliasRegistry,提供了对别名的管理),实现了SingletonBeanRegistry(支持单例的注册和查询)

1.1.2ConfigurableBeanFactory,继承于HierarchicalBeanFactory(上文提及),和SingletonBeanRegistry,是一个简单的beanfactory.

1.2AbstractAutowireCapableBeanFactory除了继承了AbstractBeanFactory还实现了AutowireCapableBeanFactory,添加了bean的自动装配功能

1.3DefaultListableBeanFactory除了继承AbstractAutowireCapableBeanFactory,还实现了ConfigurableListableBeanFactory(继承了AutowireCapableBeanFactory,ListableBeanFactory,ConfigurableBeanFactory,其中两个接口重复,主要是对简单容器尽心简单拓展,即ListableBeanFactory的功能),BeanDefinitionRegistry(继承于AliasRegistry,该接口主要是为了管理BeanDefinition的别名),Serializable(支持序列化的标记接口)


注释1:bean的销毁前操作和初始化前操作一共有三种方法,1通过注释@PostConstruct  @PreDestroy ,2,在xml文件中指定init-method和destory-method,3通过实现接口InitializingBean,DisposableBean

注释2.spring观察者模式

注释3http://www.importnew.com/1099.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值