10分钟详解Spring全家桶“7大知识点”( 三 )


图中红框是比较重要的组件 , core组件是spring所有组件的核心;bean组件和context组件我刚才提到了 , 是实现IOC和依赖注入的基础;AOP组件用来实现面向切面编程;web组件包括springmvc是web服务的控制层实现 。
三、spring中机制和实现

10分钟详解Spring全家桶“7大知识点”

文章插图
 
▌1.AOP
AOP的实现是通过代理模式 , 在调用对象的某个方法时 , 执行插入的切面逻辑 。实现的方式有动态代理也叫运行时增强 , 比如jdk代理、CGLIB;静态代理是在编译时进行织入或类加载时进行织入 , 比如AspectJ 。
关于AOP还需要了解一下对应的Aspect、pointcut、advice等注解和具体使用方式 。
▌2.placeHolder动态替换
主要需要了解替换发生的时间 , 是在bean definition创建完成后 , bean初始化之前 , 是通过实现BeanFactoryPostProcessor接口实现的 。主要实现方式有PropertyPlaceholderConfigurer和PropertySourcesPlaceholderConfigurer 。这两个类实现逻辑不一样 , spring boot使用PropertySourcesPlaceholderConfigurer实现 。
▌3.事务
需要了解spring 中对事务规定的隔离类型和事务传播类型 。要知道事务的隔离级别是由具体的数据库来实现的 , 在数据库部分我会详细介绍 。
事务的传播类型 , 可以重点了解最常用的REQUIRED和SUPPORTS类型 。
▌4.核心接口类
  • ApplicationContext保存了ioc的整个应用上下文 , 可以通过其中的beanfactory获取到任意到bean;
  • BeanFactory主要的作用是根据bean definition来创建具体的bean;
  • BeanWrapper是对Bean的包装 , 一般情况下是在spring ioc内部使用 , 提供了访问bean的属性值、属性编辑器注册、类型转换等功能 , 方便ioc容器用统一的方式来访问bean的属性;
  • FactoryBean通过getObject方法返回实际的bean对象 , 例如motan框架中referer对service的动态代理就是通过FactoryBean来实现的 。
▌5.Scope
bean的scope是指bean的作用域 , 默认情况下是单例模式 , 这也是使用最多的一种方式;多例模式 , 即每次从beanFactory中获取bean都会创建一个新的bean 。
request、session、global-session是在web服务中使用的scope , request每次请求都创建一个实例 , session是在一个会话周期内保证只有一个实例 。
global-session在5.x版本中已经不在使用 , 同时增加了Application和Websocket两种scope , 分别保证在一个ServletContext与一个WebSocket中只创建一个实例 。
▌6.事件机制
spring的事件机制需要知道spring定义的五种标准事件 , 具体事件可见上图 , 了解如何自定义事件和实现对应的applicationListener来处理自定义事件 。
三、spring应用相关
10分钟详解Spring全家桶“7大知识点”

文章插图
 
▌1.常用注释
a.类型类注释:
类型类注释包括controller、service等 , 需要重点了解
其中component和bean注解的区别如下:
  • @Component注解在类上使用表明这个类是个组件类 , 需要Spring为这个类创建bean 。
  • @Bean注解使用在方法上 , 告诉Spring这个方法将会返回一个Bean对象 , 需要把返回的对象注册到Spring的应用上下文中 。
b.设置类注解
重点了解@Autowire和@Qualifier以及bytype、byname等不同的自动装配机制 。
c.web类注解
主要以了解为主 , 关注@RequestMapping、@GetMapping、@PostMapping等路径匹配注解 , 以及@PathVariable、@RequestParam 等参数获取注解 。
d.功能类注解
包括@ImportResource引用配置、@ComponentScan注解自动扫描、@Transactional事务注解等等 , 这里不一一介绍了 。
▌2.配置方式
需要了解配置spring的几种方式 , xml文件配置、注解配置和使用api进行配置 。
自动装配机制需要了解按类型匹配进行自动装配 , 按bean名称进行自动装配 , 构造器中的自动装配和自动检测等主要的四种方式 。
还需要了解一下list、set、map等集合类属性的配置方式以及内部bean的使用 。
四、Spring的Context的初始化流程
10分钟详解Spring全家桶“7大知识点”

文章插图
 
Spring框架组件
图中左上角是三种类型的context , xml配置方式的context、springboot的context和web服务的context 。不论哪种context , 创建后都会调用到AbstractApplicationContext类的refresh方法 , 这个方法是我们要重点分析的 。


推荐阅读