day01-spring底层核心解析

spring底层核心解析

前言:记录学习源码笔记

1,bean的创建过程

Bean创建的生命过程大概如下:

1、利用该类构造器方法得到一个实例化对象(但是如果存在多个构造器,spring会自己选择,这个叫推断构造方法

2、得到一个对象后,spring会判断该对象是否被@Autowired注解了属性,把这些属性找出来spring进行赋值**【依赖注入】**

3、依赖注入后,Spring会判断该对象是否实现了BeanNameAware接口、BeanClassLoaderAware接口、BeanFactoryAware接口,如果实现了,就表示当前对象必须实现该接口中所定义的setBeanName()、setBeanClassLoader()、setBeanFactory()方法,那Spring就会调用这些方法并传入相应的参数**(Aware回调)**

4、Aware回调后,spring会判断是否存在@PostConstruct注解,如果存在spring会调用当前对象的此方法**【初始化前】**

5、后面,spring会判断对象是否实现InitializingBean ,如果实现了,必须实现InitializingBean接口中的afterPropertiesSet()方法,spring就会调用当前对象中的afterPropertiesSet()方法(初始化)

6、最后,spring会判断当前是否需要AOP,如果不需要bean就创建完毕,如果需要则需要AOP,则会进行动态代理并生成一个代理对象,作为Bean(初始化之后)

2,推断构造方法【面试题】

如果一个类存在多个构造方法,spring会使用哪个呢?

spring的判断逻辑如下:

1,如果只有构造方法,无论是无参构造还是有参构造方法,spring都会用这个

2,如果是多个

2.1 这些构造方法中,如果存在一个构造方法,则会直接使用无参这个

2.2 如果构造方法中,不存在一个无参的构造方法,那么spring 会报错【原因是不知道用哪个】

spring的设计思想是:

1.如果一个类只有一个构造方法,那么没选择直接用

2.如果存在多个构造器,如果有无参构造器直接用无参构造器【默认的选择】

3.如果某个构造方法上加了@Autowired注解,那就表示程序员告诉Spring就用这个加了注解的方法,那Spring就会用这个加了@Autowired注解构造方法了

3,AOP

aop就是进行动态代理,在创建一个Bean过程中,如何spring会判断需不需要AOP

1.找出所有的切面bean

2.遍历所有的切面中的方法,查看是否写了@Before @After @Around...

3.如果有,判断对应的Pointcut是否和当前的Bean对象匹配

4.如果匹配则表示当前Bean对象有匹配的Pointcut,表示需要AOP

喜欢我的文章记得点个在看,或者点赞,持续更新中ing...

相关推荐
paopaokaka_luck6 分钟前
基于SpringBoot+Uniapp的自习室预约小程序(腾讯地图API、Echarts图形化分析、二维码识别)
vue.js·spring boot·后端·spring·echarts
小小8程序员1 小时前
Spring Boot AOP 全面解析(原理 + 实战 + 场景)
java·spring boot·spring
何中应1 小时前
【面试题-8】Spring/Spring MVC/Spring Boot/Spring Cloud
java·spring boot·后端·spring·mvc·面试题
没什么本事2 小时前
Springboot CGLIB 代理对象问题
java·spring boot·spring
Javatutouhouduan2 小时前
SpringBoot整合reids之JSON序列化文件夹操作
java·spring boot·spring·bootstrap·html·后端开发·java架构师
她说..2 小时前
Spring AOP场景5——异常处理(附带源码)
java·数据库·后端·spring·springboot·spring aop
醇氧2 小时前
springAI学习 (二) 模型
java·学习·spring·ai·ai编程
0和1的舞者2 小时前
《MyBatis 从入门到上手:超全基础操作 + XML 配置指南》
数据库·spring boot·学习·spring·mybatis·框架·开发
漂亮的小碎步丶2 小时前
【4】Spring Boot项目中Spring核心容器原理详解
java·后端·spring
serendipity_hky11 小时前
【SpringCloud | 第4篇】Gateway网关统一入口
spring·spring cloud·微服务·gateway