spring的IOC类图
IOC(Inversion of Control)控制反转:把代码中需要实现的对象创建、依赖的代码反转给容器来帮忙实现。
DI(Dependency Injection)依赖注入:对象从容器中查找它的依赖类,并赋值。
思考:
1、对象与对象的关系的表示:xml,properties文件等语义化配置文件表示
2、描述对象关系的文件存放的地方:classPath,filesystem,URL网络资源,servletContext等
3、不同配置文件与对象描述进行统一化:内部需要有一个统一的关于对象的定义,所有的外部描述都必须转化成统一的描述定义
4、不同配置文件的解析:不同配置文件的语法,采用不同的解析器
Spring的核心容器类图:
1、BeanFactory:
定义IOC容器的基本规范。有3个重要的子类:
ListableBeanFactory(可列表化的bean)、
HierarchicalBeanFactory(有继承关系的bean)
AutowireCapableBeanFactory(定义bean的自动装配规则)
三个子类最终默认实现类是DefaultListableBeanFactory.
spring中提供了许多的IOC容器的实现,eg.GenericApplicationContext,ClasspathXmlApplicationContext,ApplictaionContext等。
ApplicationContext是一个高级的ioc,除了提供容器的基本功能外,还提供了以下服务:
(1)支持信息源,可以实现国际化(实现MessageSource接口)
(2)访问资源(实现ResourcePatternResolver接口)
(3)支持应用事件(实现ApplicationEventPublisher接口)
BeanFactory只对IOC的行为做了基本的定义,不关心bean是如何定义加载的。
基本功能:1、获得bean 2、判断IOC是否包含某个bean 3、bean的类型判断 4、获得bean的类型/别名
2、BeanDefinition
定义了一个具有属性值,构造声明值,被一个具体实现类提供的更多信息的bean实例
BeanDefinition 描述了一个bean的实例(属性值,构造方法声明的值,被具体实现类提供的更多的信息)
继承 :AttributeAccessor(任意对象属性访问器) , BeanMetadataElement(从资源中获取bean的数据元素)
主要功能:1、修改bean的属性: 父bean的名称、 bean的scope 、 懒加载 、bean的依赖 、自动装配
beanFactory的名称以及方法的名称等
2、获得一个bean的属性值:父bean的名称、bean的scope等
3、校验bean的属性值: bean是否是自动装配候选人等
3、BeanDefinitionReader
bean的解析器,主要是对Spring的配置文件的解析。
主要功能:1、获得bean工厂对Bean注册 2、获得资源加载器/类加载器
3、获得bean名称的某个策略 4、从特定资源中加载bean