1.spring框架有哪些组件?
比较重要的就是core组件、context组件、bean组件。
有一个比喻很贴切的说明了三大基础组件之间的关系,bean是一个舞台剧演员,core就是舞台剧所需的道具,context就是舞台上除了道具之外的所有东西(舞台、幕布、灯光、音响之类的东西)。
2.spring框架各个组件的实现机制?
bean组件:主要的工作就是bean的定义、创建、注册,需要关注的就是创建。
创建bean步骤:
a.捋清楚bean的属性(默认的、用户自定义的)和方法(继承的、实现的),需要经过加载、解析、注册步骤
b.捋清楚bean的依赖(bean与bean之间的关系),避免循环依赖报错
c.通过FactoryBean 的getBean()创建对象,对象的各种判断策略(缓存、单例模式、依赖关系等)已在a.b捋清楚,不同的策略会走不同的逻辑
创建完成,就在IOC中等待。
core组件:把所需资源的加载、解析和资源的定义整合在一起便于其他组件使用
将资源(创建bean需要的、框架需要的)通过加载、解析步骤,注入到context的AbstractApplicationContext对象中,AbstractApplicationContext是ApplicationContext 的实现类
context组件:提供一个环境,保存各个对象的状态
ApplicationContext 是 Context 的顶级父类
总体来说 ApplicationContext 必须要完成以下几件事:
-- 标识一个应用环境
-- 利用 BeanFactory 创建 Bean 对象
-- 保存对象关系表
-- 能够捕获各种事件
通过spring框架构建的项目基本要走这么一个流程,context把spring框架需要的各种属性或者行为通过面向对象的思想,抽象为一个个具体的对象,通过对象依赖把环境构建完成。
通过三大组件,实现了spring ioc容器
spring ioc:又称为控制反转,spring对bean的控制由被动变主动,既需要什么对象只要打上标记(依赖注入),spring ioc就会帮你注入。
3.spring框架的相应组件为什么要那么实现?
spring框架的一个套路就是面向对象,把各种属性和行为赋予给各种对象,通过对象去实现
4.spring框架的优缺点?
优点:
侵入性低,依赖注入
扩展性好,支持面向切面编程、支持事务管理、支持WS、支持集成主流的持久层框架等
耦合性低,mvc分层架构,诸多组件模块可以自由选择部分或者全部
开发周期快,熟悉的情况下,spring对很对第三方都有集成,可以提高开发效率
缺点:
不支持分布式
多配置繁琐
学习成本高
参考链接:
https://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/index.html