1.ClassPathXmlApplicationContext继承UML类图
- a.BeanFactory:没啥说的Spring容器访问bean的根接口,提供的方法如getBean()获取bean、containsBean()是否包含bean、isSingleton()bean单例吗?、isPrototype()bean是原型的吗?、isTypeMatch()bean是与那个类型匹配吗?
- b.HierarchicalBeanFactory继承BeanFactory添加了getParentBeanFactory()获取父beanFactory的方法、containsLocalBean()包含本地的bean忽略掉祖先contexts包含的bean
- c.ListableBeanFactory继承BeanFactory提供了一些可以获取BeanDefinitonNames和getBeanNames的方法,从命名上不难理解,集合性操作BeanFactory
- d.ResourceLoader加载资源的策略接口(如classPath),getResource()返回指定位置的资源,getClassLoader暴露ResourceLoader使用的ClassLoader
- e.ResourcePatternResolver继承ResourceLoader添加了getResources()根据localtionPattern获取资源数组的接口
- f.ApplicationEventPublisher发布事件的接口
- g.EnvironmentCapable定义组件能活到Environment对象
- h.MessageSource用于解析消息的策略接口,支持此类消息的参数化和国际化
- i.ApplicationContext为应用提供配置的中心接口,当应用在运行中是只读的,实现类可以重新加载他如果支持的话。比如applicationId
- ApplicationName,DisPlayName,startUpDate,getParent ApplicationContext
- j.LifeCycle:定义启动/停止生命周期控制方法的通用接口包含start()、stop()、isRunning方法
- k.DefaultResourceLoader{@link ResourceLoader}接口的默认实现 由{@link ResourceEditor}使用,并作为基类 * {@link org.springframework.context.support.AbstractApplicationContext}。 也可以单独使用。
- l.DispisbleBean:实现该接口的bean会在关闭容器时调用destroy()方法
- m.ConfigurableApplicationContext SPI接口由大多数(如果不是全部)应用程序上下文实现除了{@link org.springframework.context.ApplicationContext}接口中的应用程序上下文客户端方法之外,还提供配置应用程序上下文的工具
- 比如setId setEnvironment、setParent、addBeanFactoryPostProcessor、addApplicationListener、refresh、getBeanFactory其中以配置ApllicationContext方法居多
- n.AbstractApplicationContext {@link org.springframework.context.ApplicationContext}接口的抽象实现。不要求用于配置的存储类型; 只需实现常见的上下文功能 使用Template Method设计模式,需要具体的子类来实现抽象方法.扩展方法如refreshBeanFactory刷新beanFactory
- o.AbstractRefreshableApplicationContext {@link org.springframework.context.ApplicationContext}实现的基类,它应该支持对{@link #refresh()}的多次调用, 每次都创建一个新的内部bean工厂实例。通常(但不一定),例如 上下文将由一组配置位置驱动,以从中加载bean定义,提供扩展方法loadBeanDefinitions
- p.AbstractRefreshableConfigApplicationContext{@link AbstractRefreshableApplicationContext}子类,用于添加指定配置位置的常见处理。 * 用作基于XML的应用程序上下文实现的基类,例如{@link ClassPathXmlApplicationContext} * 和{@link FileSystemXmlApplicationContext}提供了对configLocations,即配置地址的解析存储操作
- r.AbstractXmlApplicationContext 方便的{@link org.springframework.context.ApplicationContext}实现基类 ,从包含{@link org.springframework.beans.factory.xml.XmlBeanDefinitionReader} * 理解的bean定义的XML文档中读取beanDefinitons
- s.ClassPathXmlApplicationContext 独立的XML应用程序上下文,获取上下文定义文件 * 从类路径中,将普通路径解释为包含包路径的类路径资源名称(例如“mypackage / myresource.txt”)。
2.StandardEnvironment相关类继承关系UML
- a.PropertyResolver:用于解析任何底层源的属性的接口。方法有.getProperty() 返回与给定键关联的属性值、resolvePlaceholders()解析给定文本中的$ {...}占位符,将其替换为{@link #getProperty}解析的相应属性值。 没有默认值的无法解决的占位符将被忽略并传递不变
- b.ConfigurablePropertyResolver继承PropertyResolver配置接口,提供一些设置属性接口比如setConversionService、setPlaceholderPrefix、setPlaceholderSuffix、validateRequiredProperties
- c.Environment继承自PropertyResolver 表示当前应用程序正在运行的环境的接口。 模拟应用程序环境的两个关键方面: <em>profiles</em> and <em>properties</em>与属性访问相关的方法通过{@link PropertyResolver}超级接口公开,提供了获取profiles的方法比如getActiveProfiles返回显式为此环境激活的配置文件集、getDefaultProfiles如果未明确设置活动配置文件,则默认情况下返回要激活的配置文件集、acceptsProfiles
- d.ConfigurableEnvironment继承自Environment和COnfigurablePropertyResolver,不怎么说明也知道肯定包含设置profiles的方法比如setActionProfiles方法,addActionProfile。并添加了扩展方法getPropertySources()返回environment需要的PropertySources对象,方便在解析environment搜索相应的PropertySource对象,getSystemProperties获取系统属性,getSystemEnvironment获取系统环境,merge将给定父环境的活动配置文件,默认配置文件和属性源附加到此(子)环境的每个环境的相应集合
- e.AbstractEnvironment{@link Environment}实现的抽象基类。 支持保留的默认配置文件名称的概念, * 并允许通过{@link #ACTIVE_PROFILES_PROPERTY_NAME}和{@link #DEFAULT_PROFILES_PROPERTY_NAME} * 属性指定活动和默认配置文件
- f.StandardEnvironment@link Environment}实现适用于'标准'(即非Web)应用程序。