spring学习笔记


Spring学习笔记

1.IOC的概念:全称是Inversion of Contorl叫做控制反转,和依赖注入概念等同,思想是不需要自己去创建对象,让IOC创建好拿来。

主要是通过引入中间代理消除对象间复杂的耦合关系,并统一管理分散的复杂耦合关系。

IOC三种依赖注入方式:

方式 构造方法注入 Setter注入 接口注入
好处 对象被构造后进入就绪状态,可以马上使用 当前对象只要为其依赖对象所对应的属性添加setter方法,就可以通过Setter将相应的依赖对象设置到被注入的对象中 被注入对象如果想要为其注入依赖对象,就必须实现某个接口,接口中提供注入方法
优点 构造后即进入就绪状态; setter方法可以被继承,允许设置默认值
缺点 当依赖对象比较多时,构造方法参数比较长 对象构造后无法进入就绪状态 强制被注入对象实现不必要的接口,带有侵入性

注:接口和接口方法不重要,重要的是接口声明方法的参数类型必须是“被注入的对象”所依赖的对象类型

2.IOC Service Provider职责是:

1.业务对象的构建管理:IOC Service Provider需要将对象的构建逻辑从客户端对象剥离

2.业务对象间的依赖绑定:IOC Service Provider通过结合之前构建和管理所有业务对象,以及各个业务间可以识别的依赖关系,将这些对象依赖的对象注入绑定,从而保证每个业务对象在使用的时候,可以处于就绪状态。

IOC Service Provider如何管理对象间的关系:

方式一:直接编码方式注册对象管理信息

方式二:配置文件的方式

方式三:元数据方式(即注解的方式)

3.IOC容器之BeanFactory

IOC Service Provider是一个可以有对象创建管理和依赖注入服务的一个容器,是Spring IOC容器的一部分,Spring Ioc还提供对象生命周期管理,线程管理,查找服务,AOP支持等

Spring提供了两种容器类型:BeanFactory和ApplicationContext

BeanFactory:基础类型IOC容器,提供完整的IOC服务支持,如果没有特殊指定,默认采用延迟初始化策略(lazy-load)。

ApplicationContext:在BeanFactory的基础上构建,是相对比较高级的容器实现,其拥有BeanFactory的所有支持,还提供了时间发布、国际化信息等。ApplicationContext间接继承BeanFactory,还实现了其他的接口。

BeanFactory的对象注册与依赖绑定方式:

方式一:直接编码

方式二:外部配置文件方式(properties配置和xml配置)

方式三:注解方式

spring相关的问题:

1.请用自己的语言描述springIOC、DI、MVC的基本执行原理。

答:SpringIOC、DI、MVC主要执行分为三个阶段

配置阶段:主要完成web.xml和Annotation配置

初始化阶段:完成IOC容器的初始化、DI的自动注入和HandlerMapping的初始化

运行阶段:根据用户请求的URL调用对应的Method,将结果打印到浏览器

2.Spring中的Bean是线程安全的吗?为什么?

Spring中的Bean是用户自己写的类,该bean的线程是否安全与spring无关,因为Spring只承担了创建和管理bean的职责,并没有对Bean进行任何修改。

3.使用自己的语言详细描述SpringIOC和DI的工作流程

IOC流程:

a.读取配置文件

b.解析配置文件,并封装成BeanDefinition

c.把BeanDefinition对应的实例放入容器进行缓存

DI流程:

a.循环读取BeanDefinition的缓存信息

b.调用getBean()方法创建对象实例

c.将创建好的对象实例包装为BeanWarpper对象

d.将BeanWapper对象缓存到IOC容器

e.循环IOC容器进行注入


文章作者: it星
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 it星 !
 上一篇
java概念与工具类 java概念与工具类
it星
java基础与概念: 1.什么是面向对象? 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个问题的步骤中的行为。面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计
2020-04-30
下一篇 
Netty入门 Netty入门
Netty入门 Netty是JBOSS提供的开源项目,github上的独立项目 Netty是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠的网络IO程序。Netty主要是针对TCP协议下,面向客户端高并发应用或Peer
  目录