
Spring框架底层原理
文章平均质量分 94
通过Spring常用的注解来分析Spring的底层原理
ONESTAR博客
https://onestar.newstar.net.cn
展开
-
@EventListener注解 -【Spring底层原理】
目录一、注解用法二、实例分析三、源码分析四、总结上篇我们讲到实现事件监听可以使用实现ApplicationListener接口Spring中ApplicationListener -【Spring底层原理】,如果有多个方法需要监听事件,那岂不是每个方法都要放在类中实现ApplicationListener接口,这样并不是很方便,所以spring为我们提供了另外一种方式实现事件监听:使用@EventListener注解一、注解用法注解源码如下,有如下作用:可以...原创 2021-03-25 08:50:10 · 1870 阅读 · 1 评论 -
Spring中ApplicationListener -【Spring底层原理】
目录一、概述二、实例分析三、源码分析四、总结一、概述在前面讲到了bean的拓展,这篇文章将讲述事件的拓展ApplicationListener 是用来监听容器中发生的事件,只要事件发生,就会触发监听器的回调,完成事件驱动模型的开发这里通过两个问题来进行概述,什么是事件?spring是如何实现的?【1】什么是事件事件是可以被控件识别的操作,如按下确定按钮,选择某个单选按钮或者复选框。每一种控件有自己可以识别的事件,如窗体的加载、单击、双击等事件,编辑框(..原创 2021-03-24 09:24:23 · 886 阅读 · 0 评论 -
Spring中BeanDefinitionRegistryPostProcessor接口 -【Spring底层原理】
目录一、概述二、实例分析三、源码分析四、总结一、概述上一篇我们讲到spring中BeanFactoryPostProcessor可以对bean进行修改拓展,Spring中BeanFactoryPostProcessor接口 -【Spring底层原理】,BeanDefinitionRegistryPostProcessor是BeanFactoryPostProcessor的一个子接口,那BeanDefinitionRegistryPostProcessor是不是可以对BeanD.原创 2021-03-24 09:21:15 · 636 阅读 · 0 评论 -
Spring中BeanFactoryPostProcessor接口 -【Spring底层原理】
目录一、概述二、实例分析三、源码分析四、总结一、概述BeanFactoryPostProcessor是实现spring容器功能扩展的重要接口,例如修改bean属性值,实现bean动态代理等。很多框架都是通过此接口实现对spring容器的扩展,例如mybatis与spring集成时,只定义了mapper接口,无实现类,但spring却可以完成自动注入,这些都是如何实现的呢,本文将一探究竟。区分:BeanPostProcessor:bean后置处理器,bean创建对象初始化.原创 2021-03-18 11:02:00 · 546 阅读 · 0 评论 -
@Profile注解 -【Spring底层原理】
目录@Profile注解 -【Spring底层原理】一、注解用法二、实例分析三、源码追踪四、总结一、注解用法在我们开发开发测试部署当中,有不同的环境,比如有:开发环境、测试环境、上产环境,不同的环境有不同的组件,这听着怎么那么像springboot中的多环境配置呢?今天,咱们来看看在spring中是如何实现的。为了多环境开发,Spring为我们提供的可以根据当前环境,动态的激活和切换一系列组件的功能,比如数据源组件的配置,不同开发环境连接的数据源可能会不同,就可以使用@P原创 2021-03-17 09:08:28 · 1145 阅读 · 0 评论 -
Spring中Aware接口 -【Spring底层原理】
目录一、概述二、实例分析三、源码追踪四、总结一、概述不管是我们平时开发中,还是在看spring源码中,都会遇到Aware这个接口,Aware的英文意思:意识到,察觉到,发觉,发现。从英文翻译来看,Aware做的事情应该是发现某一个东西。注释的大致意思是:Aware是一个标记性的超接口(顶级接口),指示了一个Bean有资格通过回调方法的形式获取Spring容器底层组件。实际回调方法被定义在每一个子接口中,而且通常一个子接口只包含一个接口一个参数并且返回值为void的方法。.原创 2021-03-15 13:31:07 · 801 阅读 · 0 评论 -
@Autowired注解 -【Spring底层原理】
目录一、概述二、实例分析三、源码追踪四、总结一、概述【1】注解用法根据@Autowired注解的源码,可以看到该注解可以作用在构造器、参数、方法、属性,都是从容器中获取参数组件的值标注在方法上:@Bean+方法参数,参数从容器中获取,默认不写@Autowired效果是一样的,都能自动装配 标注在构造器上:如果组件上只有一个有参构造,这个有参构造的@Autowired可以省略,参数位置的组件还是可以自动从容器中获取 标注在参数位置 标注在属性位置@Target(.原创 2021-03-15 13:27:11 · 1547 阅读 · 0 评论 -
Spring Bean的生命周期源码详解 - 【Spring底层原理】
一、源码分析先分析源码,再来总结,从启动类开始,只会截取部分重要代码,但方法调用不会断先来看看bean生命周期源码的脑图,可以跟着这个脑图来分析源码源码分析:从AnnotationConfigApplicationContext开始public AnnotationConfigApplicationContext(Class<?>... componentClasses) { this(); // 将beanDefinition对象存储到beanDefini原创 2021-03-10 08:50:59 · 608 阅读 · 0 评论 -
Bean的生命周期 - 【Spring底层原理】
Bean的生命周期 - 【Spring底层原理】一、概述1. Bean的生命周期Bean的生命周期包括Bean的创建、存活、销毁的过程,创建就是实例化的过程,存活包括属性赋值和初始化,所以又说Bean的生命周期为:实例化、属性赋值、初始化和销毁,而这个过程单例和多例有所不同:【1】单例Bean实例化:容器启动的时候实例化对象 存活:只要容器还在,Bean对象就一直存活(和容器共存亡) 销毁:容器关闭的时候就销毁【2】多例Bean实例化:获取对象的时候实例化对象 存活:对象只要原创 2021-03-04 09:50:17 · 1744 阅读 · 1 评论 -
FactoryBean -【Spring底层原理】
目录一、FactoryBean用法二、实例分析三、源码追踪四、总结一、FactoryBean用法注意:这里是FactoryBean,而不是BeanFactoryFactoryBean是一个工厂Bean,用于生成某一个类型Bean实例 BeanFactory是Spring容器中的一个基本类也是很重要的一个类,用于创建和管理Spring容器中的BeanFactoryBean首先它是一个Bean,但又不仅仅是一个Bean。它是一个能生产或修饰对象生成的工厂Bean,类似.原创 2021-03-02 08:49:32 · 898 阅读 · 0 评论 -
@Import注解 -【Spring底层原理】
目录一、注解用法二、实例分析三、源码追踪一、注解用法@Import注解也是用来给容器注册组件的,使用@Import注解快速给容器中导入一个组件有三种方法导入@Configuration注解的配置类使用@Import(要导入到容器中的组件):容器中就会自动注册这个组件,ID默认为全类名 导入ImportSelector的实现类:通过实现ImportSelector类,实现selectImports方法,返回需要导入组件的全类名数组 导入ImportBeanDefinitio.原创 2021-03-01 09:59:19 · 892 阅读 · 0 评论 -
@Conditional注解 -【Spring底层原理】
案例已上传GitHub,欢迎star以鼓励:https://github.com/oneStarLR/spring-annotation一、注解用法@Conditional是Spring4新提供的注解,也是用来注册bean的,作用如下:按照一定的条件进行判断,满足条件的给容器注册bean 从源码中我们可以看到,可以作用在类和方法上 需要传入一个Class数组,并继承Condition接口// 可以作用在类上,也可以作用在方法上@Target({ElementType.TYPE.原创 2021-02-25 09:08:14 · 1035 阅读 · 1 评论 -
@Scope注解 、@Lazy注解 -【Spring底层原理】
一、注解用法【1】@Scope注解@Scope注解是用来控制实例作用域的,单实例还是多实例,该注解可以作用在类和方法上面,通过属性来控制作用域,如下: prototype:多实例,IOC容器启动的时候并不会创建对象放在容器中,每次获取的时候才会调用方法创建对象 singleton:单实例,IOC容器启动的时候就会调用方法创建对象放到容器中,以后每次获取都是从容器map中拿同一个对象 request:同一次请求创建一个实例 session:同一个session创建一原创 2021-02-25 08:45:35 · 988 阅读 · 2 评论 -
@ComponentScan注解 -【Spring底层原理】
目录一、注解用法1. 背景知识2. @ComponentScan注解作用二、实例分析1. excludeFilters=Filter[ ]2. includeFilters=filter[ ]3. FilterType.CUSTOM三、源码追踪案例已上传GitHub,欢迎star:https://github.com/oneStarLR/spring-annotation一、注解用法1. 背景知识什么是组件?组件也是抽象的概念,可以理解为一些符.原创 2021-01-21 09:36:02 · 1722 阅读 · 2 评论 -
@Configuration注解 -【Spring底层原理】
目录一、注解用法1. 知识背景2. @Configuration注解作用二、实例分析1. 案例2. 问题三、源码追踪四、总结一、注解用法1. 知识背景lite @Bean mode:当@Bean方法在没有使用@Configuration注解的类中声明时称之为lite @Bean mode Full @Configuration:如果@Bean方法在使用@Configuration注解的类中声明时称之为Full @ConfigurationFull @C.原创 2021-01-18 09:21:43 · 3732 阅读 · 2 评论 -
Spring框架底层原理- AOP
一、概述1. 什么是AOPAOP(Aspect Oriented Programming):面向切面编程,指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的操作。如:性能监控、日志记录、权限控制等,通过AOP解决代码耦合问题,让职责更加单一。AOP技术它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为”Aspect”,即切面。所谓”切面”,简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少原创 2021-01-09 09:23:38 · 950 阅读 · 0 评论 -
Spring框架底层原理-IoC
目录一、概述二、IoC解耦推导1. 传统直接调用对象2. 接口解耦3. 工厂模式解耦4. xml 配置 + 反射 + 工厂解耦(IoC底层的实现)三、IoC 原理理解1. IoC是什么2. IoC能做什么3. IoC和DI一、概述 Spring是一个轻量级的开源JavaEE框架 Spring可以解决企业应用开发的复杂性 Spring两大核心部分:IoC和AOP 特点: 方便解耦,简化开发 AOP编.原创 2021-01-05 10:10:41 · 462 阅读 · 0 评论