1、Spring中bean的创建流程bean创建的简易流程如下所示:首先调用createBeanInstance方法进行bean的实例化然后调用populateBean进行属性的填充接着调用initializeBean进行后置处理最后调用getSingleton方法添加到单例池中以上createBeanInstance、populateBean和initializeBean均属于类org.springframework.beans.factory.support.AbstractAutowi
1、FactoryBean源码详解首先,我们来看看FactoryBean的源码:package org.springframework.beans.factory;/*由BeanFactory中的某些对象实现的接口,BeanFactory是Spring IOC容器的核心;如果bean实现了这个接口,它将被用作对象的工厂来公开,而不是直接作为bean实例来公开实现了该接口的bean不能被作为一个普通的bean使用。FactoryBean以bean的类型定义,但是它暴露的bean引用始终是由它通过
Spring Boot自动装配原理初探Spring Boot自动装配主要是通过注解实现的,我们直到,Spring Boot启动类会有这样一个注解:@SpringBootApplication。在这个注解里面,除了Java的元注解以外,还有三个spring自定义的注解,分别是:@SpringBootConfiguration:标识该类是spring的配置类,是对@Configuration注解的包装@EnableAutoConfiguration:这是自动装配的关键注解,本文主要就是介绍这个注解@C
AQS原理初探AQS全称为AbstractQueuedSynchronizer,如果直接按名字翻译的话就是抽象队列式同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类的实现都依赖于它,如ReentrantLock(可重入锁)、Semaphore(信号量)等等。它是构建锁或者其他同步组件的基础框架。可重入锁这里解释一下可重入锁:可重入锁就是如果某个线程已经获得某个锁,可以再次获取该锁而不会导致死锁。ReentrantLock以及synchronized都是可重入锁,其中Reentrant
浅析JUC-ReentrantLock首先,我们来看看ReentrantLock的继承关系(通过idea查看):从上面的类图中,我们可以发现,ReentrantLock实现了Lock接口,通过Lock接口实现了更多可扩展性的锁操作,它有更加灵活的结构,并且支持Condition锁。ReentrantLock的内部类FairSync和NonfairSync继承自另一个内部类Sync,而Sync继承自大名鼎鼎的AQS,站在巨人的肩膀上实现了这一系列的锁机制。Lock首先我们来看看Lock接口。/*
从源头解析ThreadPoolExecutor第一弹—Executor&ExecutorService&AbstractExecutorService首先我们来看看Thread PoolExecutor的继承关系:从上图中可以看出,ThreadPoolExecutor继承自AbstractExecutorService,而AbstractExecutorService又实现了ExecutorService接口,ExecutorService接口继承自Executor。那么我们今天先来
Java SPI机制SPI全称为Service Provider Interface(服务提供接口),是JDK内置的一种服务发现机制,是一种将服务接口与具体实现分离以达到解耦,大大提升了程序可扩展性的机制,引入服务提供者就是引入了spi接口的实现者,通过本地的注册发现获取到具体的实现类。Java SPI实际上就是"基于接口的编程+策略模式+配置文件"组合实现的动态加载机制。系统设计之初为了各个功能模块之间解耦,一般都是基于接口编程,模块之间不对实现类进行硬编码,一旦代码涉及到具体实现类的耦合,就违反了
从源头解析ThreadPoolExecutor第二弹—ThreadPoolExecutor的内部类ThreadPoolExecutor主要包括如下内部类:其中AbortPolicy、CallerRunsPolicy、DiscardOldestPolicy、DiscardPolicy表示任务的拒绝策略,当线程池的线程数量达到最大值并且阻塞队列已满时,根据这些不同的策略对新提交的任务进行不同的处理。它们都实现了RejectedExecutionHandler接口。而Worker代表我们执行的任务,我们提
从源头解析ThreadPoolExecutor第三弹—属性及execute方法详解首先我们看看ThreadPoolExecutor都有哪些属性:ctl属性是ThreadPoolExecutor中出现的第一个属性,所以我们首先来看看ctl属性的作用。ctl属性ctl是线程池中的重要标识,它主要有两个作用
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号