spring源码
文章平均质量分 66
吐蕃圣僧
能和我打成平手的,天底下没有几个!!
展开
-
spring依赖注入populateBean
spring属性依赖注入简介原创 2022-12-22 17:39:24 · 178 阅读 · 1 评论 -
spring创建对象doCreateBean
准备工作做完后,我们以简单的视角来看看spring是如何创建对象的原创 2022-12-14 17:09:49 · 424 阅读 · 0 评论 -
spring的Schedule定时任务执行源码分析
spring的定时任务原理解析原创 2022-03-22 10:30:16 · 1230 阅读 · 0 评论 -
spring-aop入口
技术背景java的动态字节码技术让java能够使用动态代理,而动态代理可以让我们在运行时改变一个类的运行逻辑。代理spring入口代码对spring代码进行了截取 // 创建实例 instanceWrapper = createBeanInstance(beanName, mbd, args); .... // 依赖注入,主要为属性的依赖注入 populateBean(beanName, mbd, instanceWrapper); // bean执行awa原创 2021-11-30 16:40:09 · 337 阅读 · 0 评论 -
spring依赖注入
依赖注入其实就是属性设置,在spring的环境下,因为对象是spring帮我们创建的,对面里面很多依赖也是spring的对象。这些工作都是spring来帮我们完成。属性值包括几个,属性是引用类型的,属性是基本类型的。这里我们主要讲一讲基本类型的。思考本质上就是给对象设置属性值,就是我们通常写的代码new一个对象,然后给对象赋值public class Test{ public static class PopA{ private String username; public voi原创 2021-09-10 09:57:49 · 102 阅读 · 0 评论 -
类上注解信息的收集
在spring情况下,我们经常使用@Resource,@Autowired,@PostConstruct的注解,这些注解肯定是需要处理的。处理这些注解分为两步,第一,先收集这些注解,第二对这些注解进行方法调用或者属性注入。本文主要讲属性的收集。思考正常情况下,我们怎么去收集类上面的注解呢?伪代码// 缓存对象与 注解的映射关系 private static Map<Class, List<Object>> annotions = new HashMap<>();原创 2021-09-09 09:57:49 · 152 阅读 · 0 评论 -
spring 单例的循环依赖
现象两个类都是spring的单例类,两个类里面有一个成员变量,变量都是对方。这样构成了循环依赖。 @Componentpublic class BeanA{ @Resource private BeanB beanB; }@Componentclass BeanB{ @Resource private BeanA beanA; }现在假设我们来创建对象,首先我们来创建a,然后发现a里面有个b,这个时候我们来创建b,b又触发我们创建a。这个时候构成了一个循环依赖的问题原创 2021-09-08 10:13:48 · 144 阅读 · 0 评论 -
spring单例bean的创建
设计假设我们自己来设计怎么去创建bean,有几种方案可以提供每次需要的时候new一个对象(这个也是我们常用的)对第一个进行升级,把new对象的工作交给工厂假设我们的对象是稳定的,而且是线程安全的,那么我们可以使用同一个对象,可以把这个对象缓存起来。放到一个容器,每次需要用的时候拿出来spring做的事情就是帮我们创建对象,并且把对象缓存到一个Map容器中,需要的时候从容器获取即可。上图关键的前置条件在bean创建之前有些工作时必须完成的,它们是创建bean的必要条件BeanDefi原创 2021-09-07 09:28:12 · 516 阅读 · 0 评论 -
registerBeanPostProcessors方法调用
类说明public interface BeanPostProcessor { @Nullable default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { return bean; } @Nullable default Object postProcessAfterInitialization(Object bean, String bea原创 2021-09-01 17:25:13 · 126 阅读 · 0 评论 -
spring-boot整合Hikari实现多数据源starer
项目地址点击前往功能展示引入 <dependency> <groupId>com.paper.tiger</groupId> <artifactId>multipart-datasource-spring-star</artifactId> <version>1.0.1-SNAPSHOT</version> </de原创 2021-06-08 19:25:33 · 1838 阅读 · 1 评论 -
ConfigurationClassParser解析
参考spring源码阅读环境准备 ConfigurationClassPostProcessor 注册BeanFactoryPostProcessor 接口调用源码分析BeanDefinitionRegistryPostProcessor详解ConfigurationClassPostProcessor解析前言上一篇我们写到了ConfigurationClassPostProcessor解析到了ConfigurationClassParser的创建和解析。这里我们具体分析spring原创 2021-02-03 15:13:58 · 566 阅读 · 0 评论 -
ComponentScanAnnotationParser与ClassPathBeanDefinitionScanner解析
参考spring源码阅读环境准备 ConfigurationClassPostProcessor 注册BeanFactoryPostProcessor 接口调用源码分析BeanDefinitionRegistryPostProcessor详解ConfigurationClassPostProcessor解析前言上一篇我们写到了ConfigurationClassPostProcessor解析到了ComponentScanAnnotationParser的创建和解析。这里我们具体分析s原创 2021-02-03 14:31:49 · 227 阅读 · 0 评论 -
BeanDefinitionRegistryPostProcessor详解
接口该接口继承了BeanFactoryPostProcessor接口,此接口中只有一个方法,就是postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)代码public interface BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor { /** * Modify the application context's intern原创 2021-01-19 09:31:30 · 8920 阅读 · 6 评论 -
BeanFactoryPostProcessor 接口调用源码分析
接口介绍这两个接口放在一起贴出来public interface BeanFactoryPostProcessor { /** * 在标准初始化之后修改应用程序上下文的内部bean工厂。所有的bean定义都将被加载,但是还没有bean被实例化。这允许重写或添加 * @param beanFactory the bean factory used by the application context * @throws org.springframework.beans.BeansExc原创 2021-01-18 15:13:10 · 352 阅读 · 0 评论 -
ConfigurationClassPostProcessor 等关键组件注册
ConfigurationClassPostProcessor 注册在实例化类中,用到了ConfigurationClassPostProcessor 的方法,发现这个类直接就存在与容器中,所以作者找了下这个组件注册到BD容器的时序。代码入口 org.springframework.context.annotation.AnnotationConfigApplicationContext#AnnotationConfigApplicationContext(java.lang.Class<原创 2021-01-15 15:54:02 · 526 阅读 · 0 评论 -
ConfigurationClassPostProcessor解析
上一章: spring源码环境搭建https://blog.csdn.net/qq_22986265/article/details/108293026构造public AnnotationConfigApplicationContext(Class<?>... annotatedClasses) { this(); register(annotatedClasses); refresh(); }原创 2021-01-21 19:29:43 · 1437 阅读 · 0 评论 -
spring源码阅读环境准备
想要在自己电脑上debug调试spring,首先需要几个准备工作java环境1.8+gradlespring 源码下载作者自己修改过的gitee上面的代码https://gitee.com/LieFengHenNen/spring-source-test.gitspring的github地址https://github.com/spring-projects/spring-framework/tree/5.1.x作者自己的代码引用的享学课堂的jack老师的,本人也是他带入.原创 2020-08-29 21:27:52 · 459 阅读 · 0 评论