Spring是什么

Spring是什么
Spring 是一个开源的轻量级 JavaSE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架(简化开发)
主要特点:
  • 轻量级
    0配置,API使用简单
  • 面向bean
    BOP,Bean在 Spring中才是真正的主角。
    Spring 提供了IOC(控制反转)容器(用来存放bean以及bean之间的关系)通过配置文件或者注解的方式来管理对象之间的依赖关系。
  • 松耦合
    充分利用AOP编程思想。
    对横切关注点或横切典型的职责(例如日志和事务管理)进行模块化。
  • 万能胶
    与主流框架无缝集成
  • 设计模式
    将java经典的设计模式运用的淋漓尽致
 
什么是 IOC/DI?
  • IOC(InversionofControl)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创建、依 赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知 道需要创建的对象与对象的关系。这个描述最具体表现就是我们可配置的文件。
  • DI(DependencyInjection)依赖注入:就是指对象是被动接受依赖类而不是自己主动去找,换句话说就 是指对象不是从容器中查找它依赖的类,而是在容器实例化对象的时候主动将它依赖的类注入给它。
 
IOC 容器的初始化
    BeanDefinition 的 Resource 定位、载入和注册这三个基本的过程
  • 定位资源(定位查找配置文件)
  • 加载(已经找到配置文件)
  • 注册(已经记载好配置文件解析出来,并封装成BeanDefintion)对bean的说明而已,bean还没有真正的产出(把所有的class找出来存在)
 
DI/DL依赖注入
当 Spring IOC 容器完成了 Bean 定义资源的定位、载入和解析注册以后,IOC 容器中已经管理类 Bean 定义的相关数据,但是此时 IOC 容器还没有对所管理的 Bean 进行依赖注入,依赖注入在以下两种情况发生:
  • 用户第一次通过 getBean 方法向 IOC 容索要 Bean 时,IOC 容器触发依赖注入。
  • 当用户在 Bean 定义资源中为<Bean>元素配置了 lazy-init 属性,即让容器在解析注册 Bean 定义时 进行预实例化,触发依赖注入。
 
  • 获取BeanDefintion信息
  • 调用Factory的createBean()方法
 
依赖注入实现在以下两个方法中
  • createBeanInstance:生成 Bean 所包含的 java 对象实例(根据情况可能用JDK代理、cglib依赖关系)
  • populateBean :对Bean属性的依赖注入进行处理,做类型转换
 
真正的IOC容器,factoryBeanObjectCache
 
最核心的2个包
Spring-bean.jar 定义的是规范
Spring-context 工厂的实现,DI的实现
core是最顶层的,所有的项目都要依赖
Spring-aop是Spring-aspects的上层建筑(切面)
 
Spring 思想:
 
AOP
1、Aspect Oriented Programming 
2、找出多个类中有一定规律的代码,开发时拆开,运行时再合并。 
3、面向切面编程,即面向规则编程。
解耦,专人做专事
OOP
1、Object Oriented Programming
2、归纳总结生活中一切事物。
封装、继承、多态
BOP
1、Bean Oriented Programming
2、面向 Bean(普通的 java 类)设计程序。
一切从 Bean 开始
IOC
1、Inversion of Control 
2、将 new 对象的动作交给 Spring 管理,并由 Spring 保存已创建 的对象。
转交控制权
 
DI/DL
1、Dependency Injection/Dependency Lookup 
2、依赖注入、依赖查找,Spring 不仅保存自己创建的对象,而且保存对象与对象之间的关系。 
3、注入即赋值,主要三种方式构造方法、set 方法、直接赋值。
先理清关系再赋值
 
代理模式
Proxy
1、两个参与角色:执行者、被代理人。
2、对于被代理人来说,这件事情是一定要做的,但是我自己又不想做或者没有时间做,找代理。
3、需要获取到被代理的人个人资料。
办事要求人
工厂模式
Factory
1、对调用者隐藏复杂的逻辑处理过程,调用者只关心执行结果。 
2、工厂要对结果负责,保证生产出符合规范的产品。
只对结果负责,不要 三无产品。
单例模式
1、保证从系统启动到系统终止,全过程只会产生一个实例。
2、当我们在应用中遇到功能性冲突的时候,需要使用单例模式。
保证独一无二
委派模式
1、两个参与角色,委托人和被委托人。 
2、委托人和被委托人在权利上完全平等(即实现同一个接口) 
3、委托人持有被委托人的引用。 
4、不关心过程,只关心结果。
干活是你的(普通员 工),
功劳是我的(项目经 理)。
策略模式
1、执行最终结果一样。
2、执行过程和执行逻辑不一样。
我行我素,只看结果。
原型模式
1、首先有一个原型。 
2、数据内容相同,但对象实例不同(完全两个不同的内存地址)。
拔一根猴毛,吹出千 万个。
模板模式
1、执行流程固定,但中间有些步骤有细微差别。
流程标准化,原料自 己加
 
 
 
 
 
 
 
 
 
posted @ 2019-04-16 17:32  Rachael_Fei  阅读(257)  评论(0编辑  收藏  举报