Spring的设计理念与设计模式 -- 学习笔记(粗读)

来源:互联网 发布:饥荒联机网络较差 编辑:程序博客网 时间:2024/06/14 19:50

原文

https://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/index.html

摘要和总结:

什么时候用Bean 什么时候用FactroyBean

Bean简单setget

需要复杂逻辑去建立一个bean的时候  FactroyBean

Spring 的骨骼架构Core、Context 和 Beans

Spring 的设计理念

面向Bean编程 BOP :对象之间关系用“配置文件”来管理;

oop \ bop】 一种数据结构加一种运行环境

Oop :  JAVA就是定义一个数据结构 +一种运行环境  -->对象活在内存中; Cc++数据在文件中;

Bop  :  数据结构 Bean运行环境 IOC容器

Bean包装的是object

Context :运行环境

核心组件如何协同工作

bean组件:

Bean 组件

org.springframework.beans 包下。这个包下的所有类主要解决了三件事:Bean 的定义Bean 的创建以及对 Bean 的解析

Spring Bean 的创建时典型的工厂模式,他的顶级接口是 BeanFactory


 Bean的定义

      <Bean>.....</Bean>

      将这个Bean转化成  BeanDefinition对象  在Spring中对Bean的操作其实都是对BeanDefinition的操作

      这个对象有点类似  Tomcat中的 Wrapper组件;

         Wrapper组件是对Servelet的包装 -- 不管你是什么servlet 我都给你包装成Wrapper进行操作

         BeanDefinition:不管你是什么Bean 我都把你包装成 BeanDefinition进行操作


Bean的创建:

      使用BeanFactroy;

      BeanFactory 有三个子类:ListableBeanFactory、HierarchicalBeanFactory 和 AutowireCapableBeanFactory

     每个接口都有他使用的场合,它主要是为了区分在 Spring 内部在操作过程中对象的传递和转化过程中,对对象的数据访问所做的限制。

ListableBeanFactory 接口表示这些 Bean 是可列表的,而 HierarchicalBeanFactory 表示的是这些 Bean 是有继承关系的,也就是每个 Bean 有可能有父 Bean。AutowireCapableBeanFactory 接口定义 Bean 的自动装配规则。


Bean的解析:

     XMLBeanDefinition对象


Context

Context 在 Spring 的 org.springframework.context 包下

 

 Spring 提供一个运行时的环境,用以保存各个对象的状态

 ApplicationContext 继承了 BeanFactory

总体来说 ApplicationContext 必须要完成以下几件事:

· 标识一个应用环境

· 利用 BeanFactory 创建 Bean 对象

· 保存对象关系表

· 能够捕获各种事件

ApplicationContext 继承了 BeanFactory,这也说明了 Spring 容器中运行的主体对象是 Bean,另外 ApplicationContext 继承了ResourceLoader 接口,使得 ApplicationContext 可以访问到任何外部资源


我们知道 Bean 包装的是 Object Object 有数据,Context 给数据提供生存环境Context 发现每个 Bean 之间的发现 建立 维护 关系

Context 是 Bean 关系的集合,系集合又叫 Ioc 容器。


Context组件在Spring.org.SpringFramework.context包下 ; 提供一个运行时的环境用来保存对象状态

Core

Core 组件作为 Spring 的核心组件,他其中包含了很多的关键类,其中一个重要组成部分就是定义了资源的访问方式。这种把所有资源都抽象成一个接口的方式很值得在以后的设计中拿来学习

Core 就是发现、建立和维护每个 Bean之间的关系所需要的一些列的工具,,Core 这个组件叫 Util 更能让你理解。

·

Ioc 容器如何工作

 

· 构建 BeanFactory,以便于产生所需的演员

· 注册可能感兴趣的事件

创建BeanFactory

· 创建 Bean 实例对象

· 触发被监听的事件

如何创建 Bean 实例并构建 Bean 的关系网

Bean —— FactoryBean,可以说 Spring 一大半的扩展的功能都与这个 Bean 有关,这是个特殊的 Bean 他是个工厂 Bean,可以产生 Bean 的 Bean,这里的产生 Bean 是指 Bean 的实例,如果一个类继承 FactoryBean 用户可以自己定义产生实例对象的方法只要实现他的 getObject 方法。然而在 Spring 内部这个 Bean 的实例对象是 FactoryBean,通过调用这个对象的 getObject 方法就能获取用户自定义产生的对象,从而为 Spring 提供了很好的扩展性

 

https://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/image012.gif

 

Ioc 容器的扩展点

BeanFactoryPostProcessor(初始化环境时会找到它的所有实现类,调用其所有实现方法 容器生命周期

 

BeanPostProcessor。他们分别是在构建 BeanFactory 和构建 Bean 对象时调用。  Bean生命周期

 

还有就是 InitializingBean 和 DisposableBean  Bean创建 

他们分别是在 Bean 实例创建和销毁时被调用。

 

 

Ioc 容器如何为我所用

我们使用 Spring 必须要首先构建 Ioc 容器,没有它 Spring 无法工作,ApplicatonContext.xml 就是 Ioc 容器的默认配置文件,Spring 的所有特性功能都是基于这个 Ioc 容器工作的,

 

Spring 中 AOP 特性详解

基于动态代理实现

 

Spring AOP 如何实现

设置被代理的接口,和接口的实现类也就是目标类,以及拦截器也就在执行目标方法之前被调用,

 

 

Spring 中设计模式分析

代理模式

 

策略模式

策略模式顾名思义就是做某事的策略

 

Spring 中策略模式的实现

Spring 中策略模式使用有多个地方,如 Bean 定义对象的创建以及代理对象的创建等。

 


阅读全文
0 0
原创粉丝点击