Spring的设计理念与设计模式 -- 学习笔记(粗读)
来源:互联网 发布:饥荒联机网络较差 编辑:程序博客网 时间:2024/06/14 19:50
原文
https://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/index.html
摘要和总结:
什么时候用Bean 什么时候用FactroyBean
Bean简单set,get
需要复杂逻辑去建立一个bean的时候 FactroyBean
Spring 的骨骼架构Core、Context 和 Beans
Spring 的设计理念
面向Bean编程 BOP :对象之间关系用“配置文件”来管理;
【oop \ bop】 一种数据结构加一种运行环境
Oop : JAVA就是定义一个数据结构 +一种运行环境 -->对象活在内存中; C、c++数据在文件中;
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 定义对象的创建以及代理对象的创建等。
- Spring的设计理念与设计模式 -- 学习笔记(粗读)
- Spring学习笔记(2)----------设计理念
- Spring框架设计理念与设计模式
- Spring 框架的设计理念与设计模式分析
- Spring 框架的设计理念与设计模式分析
- Spring 框架的设计理念与设计模式分析
- Spring 框架的设计理念与设计模式分析
- Spring 框架的设计理念与设计模式分析
- Spring 框架的设计理念与设计模式分析
- Spring 框架的设计理念与设计模式分析
- Spring 框架的设计理念与设计模式分析(转)
- [Java]Spring框架的设计理念与设计模式分析
- Spring 框架的设计理念与设计模式分析
- Spring 框架的设计理念与设计模式分析
- Spring 框架的设计理念与设计模式分析
- Spring 框架的设计理念与设计模式分析
- Spring 框架的设计理念与设计模式分析
- Spring 框架的设计理念与设计模式分析
- BZOJ 3195: [Jxoi2012]奇怪的道路 状压dp
- 在github下载的java项目通过idea打开(全流程图文,傻瓜式)
- Oracle数据库中的子查询,判断符In、any、all
- POJ
- nodejs实用代码段(三)
- Spring的设计理念与设计模式 -- 学习笔记(粗读)
- 【实战】2-22 MySQL安装配置等
- Learning Python Part I 之 文件
- change 性质题
- 【LeetNode2-1-10】Four sum--C++源代码(VS2015)
- Android_ListView (基本使用 / RecycleBin机制 / 源码解析 / 异步图片错位解决方案)
- gcc条件编译及其它选项
- leetcode481.Magical String
- Centos7安装mysql5.6