时间:2021-05-20
1)、IOC:控制反转,某一接口具体实现类的选择控制权从调用类中移除,转交给第三方决定,即由Spring容器借由Bean配置来进行控制
2)、DI:依赖注入,让调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,以移除调用类对某一接口实现类的依赖
3)、IOC主要分为3种类型:构造函数注入、属性注入和接口注入。Spring支持构造函数注入和属性注入
4)、类装载器ClassLoader
类装载器就是寻找类的字节码文件并构造出类在JVM内部表示对象的组件。在Java中,类装载器把一个类装入JVM中,需要经过以下步骤:
(1)装载:查找和导入Class文件
(2)链接:
A.校验:检查载入Class文件数据的正确性
B.准备:给类的静态变量分配存储空间
C.解析:对符号引用转换成直接引用
(3)初始化:对类的静态变量、静态代码块执行初始化工作
类装载工作由ClassLoader及其子类负责。ClassLoader负责在运行时查找和装入Class字节码文件。JVM在运行时会产生3个ClassLoader:跟装载器、ExtClassLoader(扩展类装载器)和AppClassLoader(应用类装载器)。其中, 根装载器不是ClassLoader的子类,它使用C++语言编写,因而在Java中看不到它,根装载器负责装载JRE的核心类库,如JRE目标下的rt.jar、charsets.jar等。ExtClassLoader和AppClassLoader都是ClassLoader的子类,其中ExtClassLoader负责装载JRE扩展目录ext中的JAR类包;AppClassLoader负责装载Classpath路径下的类包
跟装载器是ExtClassLoader的父装载器,ExtClassLoader是AppClassLoader的父装载器。默认情况下,使用AppClassLoader装载应用程序的类
JVM装载类时使用全盘负责委托机制,全盘负责是指当一个ClassLoader装载一个类时,除非显示地使用另一个ClassLoader,该类所依赖及引用的类也由这个ClassLoader载入;委托机制是指先委托父装载器寻找目标类,只有在找不到的情况下才从自己的类路径中查找并装载目标类
5)、属性注入要求Bean提供一个默认的构造函数,并为需要注入的属性提供对应的Setter方法。Spring先调用Bean的默认构造函数实例化Bean对象,然后通过反射的方法调用Setter方法注入属性值
6)、SprIng只会检查Bean中是否有对应的Setter方法,至于Bean中是否有对应的属性成员变更则不做要求
7)、JavaBean也允许以大写字母开头的属性变量名,不过必须满足变量的前两个字母要么全部大写,要么全部小写的要求
8)、标签接口是没有任何方法和属性的接口,它不对实现类有任何语义上的要求,仅仅表明它的实现类属于一个特定的类型。它主要有两个用途:第一,通过标签接口标识同一类型的类,这些类本身可能并不具有相同的方法,如Advice接口;第二,通过标签接口使程序或JVM采取一些特殊处理,如java.io.Serializable,它告诉JVM对象可以被序列化
9)、AOP相关名词
(1)连接点:一个类或一段程序代码拥有一些具有边界性质的特定点,Spring仅支持方法的连接点
(2)切点:通过切点定位特定的连接点
(3)增强:织入目标类连接点上的一段程序代码
(4)目标对象:增强逻辑的织入目标类
(5)引介:引介是一种特殊的增强,它为类添加一些属性和方法
(6)织入:将增强添加到目标类的具体连接点上的过程
(7)代理:一个类被AOP织入增强后,就产生了一个结果类,它是融合了原类和增强逻辑的代理类
(8)切面:切面由切点和增强组成
10)、增强类型
(1)前置增强:org.springframework.aop.BeforeAdvice代表前置增强,表示在目标方法执行前实施增强
(2)后置增强:org.springframework.aop.AfterReturningAdvice代表后置增强,表示在目标方法执行前后实施增强
(3)环绕增强:org.aopalliance.intercept.MethodInterceptor代表环绕增强,表示在目标方法执行前后实施增强
(4)异常抛出增强:org.springframework.aop.ThrowsAdvice代表抛出异常增强,表示在目标方法抛出异常后实施增强
(5)引介增强:org.springframework.aop.IntroductionInterceptor代表引介增强,表示在目标类中添加一些新的方法和属性
11)、ThreadLocal是保存线程本地化对象的容器。当运行于多线程环境的某个对象使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程分配一个独立的变量副本。所以每个线程都可以独立地改变自己的副本,而不会影响到其他线程所对应的副本
InheritableThreadLocal继承于ThreadLocal,它自动为子线程复制一份从父线程那里继承而来的本地变量:在创建子线程时,子线程会接收所有可继承的线程本地变量的初始值
ThreadLocal类中有一个Map,用于存储每个线程的变量副本,Map中元素的键为线程对象,值为对应线程的变量副本
同步机制采用了以时间换空间的方式,访问串行化,对象共享化;而ThreadLocal采用了以空间换时间的方式:访问并行化,对象独享化
12)、SpringMVC流程图
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言很久没有写关于Spring的文章了,最近在系统梳理Dubbo代码的过程中发现了XMLschema这个被遗漏的知识点。由于工作中使用SpringBoot比较多
最近复习了一下CSS相关的知识点,对于CSS中经典的边距重叠问题进行了梳理总结,目的是检验复习效果,也希望对他人有所帮助,疏漏之处还请各位前端老鸟们不吝赐教。提
第一个知识点:表单的属性及总结第二个知识点:H5新增的表单控件和属性以及总结第一个知识点:我们常见的表单验证有哪些呢 text 文本框标签 passwor
有些spring相关的知识点之前一直没有仔细研究:比如spring的事务,并不是没有使用,也曾经简单的在某些需要事务处理的方法上通过增加事务注解来实现事务功能,
前言这是总结SQL知识点的第二篇文章,一次只总结一个知识点,尽量说明白。上次我们谈到行转列,用的是Pivot函数,这次我们来谈谈Unpivot函数。(这里是用的