暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【Spring框架】之IoC控制反转

绘空事J 2021-05-31
1557

今天开一篇章专门研究Spring框架的相关知识希望能够由浅入深Spring最基础最应该掌握的知识梳理一遍具体术语和概论我会尽量以官方文档和书籍精通Spring4.x为准官网

https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-introduction

 

章节一 什么是控制反转IoC

IoC(Inverse of Control)是一种设计思路字面意思就是控制反转其中包括两方面内容

其一控制这里的控制指的是对象的控制权

其二反转反转指的是本应该由自己生成的对象改由让第三方容器托管

Spring中运用依赖注入DI来实现控制反转

 

下面举一个例子

需求现在有一个用户为了实现某个查询他想用mysql的形式查询

传统的模式程序员需要在servicenew一个mysqldao出来每多一个mapper就需要多new一次

需求现在用户觉得mysql不好要改成oracle的形式查询

传统的模式程序员需要对每个dao层都做修改new一个oracle对象

 

IoC模式dao的创建交个第三方容器通过setter/构造器/接口方式将mapper注入进对象相当于将创建对象的职能控制反转给用户用户需要什么实现方式就用什么方式实现

 


 

章节二 基础知识

 1  反射

Java语言语序程序化的方式间接对class进行操作class文件由类装载器装载后JVM中将形成一份描述class结构的元信息通过元信息可以获取构造信息属性方法等

 


 2 类装载器

类装载器就是寻找类的字节码文件并构造出类在JVM内部表示对象的组建类装载器把一个类装入JVM中需要以下下步骤

1.装载查找和导入class文件

2.链接执行校验准备和解析步骤

a) 校验检查载入class文件正确性

b) 准备给类的静态变量分配存储空间

c) 解析将符号引用转换成直接引用

3.初始化对类的静态变量静态代码块执行初始化工作

 

 

章节三 Spring中的IoC

1 IoC的实现和简介

Spring通过一个配置文件描述BeanBean之间的依赖关系利用Java语言的反射功能实例化Bean并建立Bean之间的依赖

IoC容器在完成这些底层工作的基础上还提供了Bean实例缓存生命周期管理Bean实例代理事件发布等...

Spring中有两种容器BeanFactory(IOC容器) ApplicationContext(应用上下文)其中BeanFactorySpring框架的基础设施面向Spring本身ApplicationContext面向Spring开发者

源自spring官网

两种容器区别

1.应用上下文可以使用消息发布ApplicationEvent

2.Ioc容器需要显示设置BeanPostProcessor在使用AOP的时候会用到

3.Ioc容器需要显示设置BeanFactoryPostProcessor在初始化bean时会用到

 

2 Bean作用域

 

源自spring官网

 

 

 

 

章节四 ApplicationContext

1 内部工作机制

SpringAbstractApplicationContextApplicationContext的抽象实现该抽象类的refresh()方法定义了Spring容器在加载配置文件后的处理过程

在这个方法中可以看到许多上下文容器优于IoC容器的的地方比如事件广播器国际化等等


2 容器事件

SpringApplicationContext能够发布事件并允许注册相应的事件监听器因此他拥有一套完善的事件发布和监听机制Spring事件运用了观察者模型

 

观察者模型

意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。

何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。

应用实例如下面代码当一个user进入代码时同时被两个listerner观察

 

 

Spring事件中三个重要对象

事件类ApplicationEvent

事件监听器接口ApplicationListener

事件广播器ApplicationEventPublisher

实例代码https://github.com/Hjwjames/springevent.git

 

 

 

章节五 小结

好勒SpringIoC控制反转相关的主要内容就这么多了其他IoC相关内容这里就不再细细列出了比如有bean的生命周期国籍化bean的几种注入方式xml注解等等

 


文章转载自绘空事J,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论