Spring框架的设计理念与设计模式分析

Spring的骨骼架构

Spring的核心组件:Core、Context和Bean;
在这里插入图片描述

Spring的设计理念

Spring是面向Bean的编程,Bean是核心组件。Spring解决的问题是,将对象之间的依赖关系转而用配置文件来管理,就是依赖注入机制。

核心组件如何协同工作

  1. Context发现每个Bean之间的关系,为他们建立关系并维护好这种关系,是一个Bean关系集合,这个集合又叫Ioc容器
  2. Core就是发现、建立和维护每个Bean之间的关系所需要的一系列工具
    在这里插入图片描述

核心组件详解

Bean组件

Spring的org.springframework.beans包下所有类解决了:Bean的定义;Bean的创建及对Bean的解析。
Spring Bean的创建是典型的工厂模式:
在这里插入图片描述
三个直接子类的区别:

  • ListableBeanFactory接口表示这些Bean是可列表的;
  • HierarchicalBeanFactory表示这些Bean是有继承关系的;
  • AutowireCapableFactory接口定义Bean的自动装配规则;

Context组件

Context在Spring的org.springframework.context包下,主要作用是为Spring提供运行时的环境,用以保存各个对象的状态;
ApplicationContext是Context的顶级父类:
在这里插入图片描述

  1. ApplicationContext继承了BeanFactory,说明Spring容器运行的主体是Bean;
  2. ApplicationContext继承了Resourceloader接口,使得ApplicationContext可以访问到任何外部的环境

ApplicationContext的子类:

  • CongigureApplicationContext表示Context是可修改的,用户可动态添加或修改已有的配置信息
  • WebApplicationContext是为Web准备的Context,可直接访问ServletContext。

Application的作用:

  1. 标识一个应用环境
  2. 利用BeanFactory创建Bean对象
  3. 保存对象关系表
  4. 能够捕获各种事件

Core组件

Core组件包含很多关键类,一个重要的是资源的访问方式。Context把资源的加载、解析和描述工作委托给ResourcePattrenResolve类来完成;

Spring的AOP的特性详解

动态代理的实现原理

Spring的AOP是基于动态代理实现的,JDK的动态代理的类图:
在这里插入图片描述

代理模式

代理模式就是给一个对象创建一个代理对象,由这个代理对象控制对原对象的引用,创建这个代理对象后可在调用原对象时增加一些额外的操作;
在这里插入图片描述

  • Subject:抽象主题,是代理对象的真实对象要实现的接口,当然可由多个接口组成
  • Proxy Subject:代理类,除了实现抽象主题定义的接口外,必须持有所代理对象的引用
  • RealSubject:被代理的类,是目标对象

Spring中代理模式的实现

在这里插入图片描述

策略模式

在这里插入图片描述

  • Context:使用不同策略的环境,可根据自身条件选择不同的策略实现类完成所要的操作。
  • Strategy:抽象策略,定义每个策略都要实现的策略方法
  • ConcreteStrategy:具体策略实现类,实现在抽象策略中定义的策略方法

Spring中策略模式的实现

Spring的代理方式有JDK动态代理和CGLIB代理;都使用了策略模式:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值