源码
文章平均质量分 90
源码解读
大·风
想起来什么就写点什么。
展开
-
ThreadPoolExecutor学习——线程池逻辑简单分析
ThreadPoolExecutor 一些操作的分析严格来说此内容并不是一个源码解读,只是在最近使用线程池的时候发现了一些之前认识误区的地方。和源码相比更关注一些方法使用的反馈,所以会显得比较简陋这里主要是介绍下面内容线程池使用哪个参数记录线程数和线程状态线程池状态以及互相装换线程创建的时机线程关闭的时机shutdown和shutdownNow的区别线程池使用哪个参数记录线程数和线程状态线程数的参数ThreadPoolExecutor要确定线程池中线程数需要三个参数privat原创 2020-11-22 00:45:01 · 481 阅读 · 0 评论 -
spring学习(三)——BeanDefinition的拼装(资源验证和Document的获取)
参考文章:http://www.iocoder.cn/IOC加载BeanDefinitions的核心逻辑主要在XmlBeanDefinitionReader.#doLoadBeanDefinitions(InputSource inputSource, Resource resource)方法中加载Definitions的流程调用#getValidationMo...原创 2019-03-14 00:23:59 · 361 阅读 · 0 评论 -
spring学习(三)——BeanDefinition的拼装(bean的注册)
参考文章:http://www.iocoder.cn解析BeanDefinitions解析方法XmlBeanDefinitionReader#registerBeanDefinitions(Document doc, Resource resource)方法 public int registerBeanDefinitions(Document doc, Resourc...原创 2019-03-14 00:24:13 · 489 阅读 · 0 评论 -
spring学习(三)——BeanDefinition的拼装(标签解析)
参考文章:http://www.iocoder.cn回到之前bean注册中说的标签解析地方,我们来看下标签具体是如何解析的。//如果该节点使用默认命名空间,执行默认解析 if (delegate.isDefaultNamespace(ele)) { parseDefaultElement(ele, delegate); } // 如果...原创 2019-03-14 00:24:31 · 165 阅读 · 0 评论 -
spring学习(三)——BeanDefinition的拼装(标签解析:import)
参考文章:http://www.iocoder.cnimport 解析xml中import的应用<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3...原创 2019-03-14 00:24:46 · 141 阅读 · 0 评论 -
spring学习(三)——BeanDefinition的拼装(全流程)
参考文章:http://www.iocoder.cnIoC 容器的初始化过程Resource 定位 BeanDefinition 的载入和解析 BeanDefinition 注册Resource 定位我们一般用外部资源来描述 Bean 对象,所以在初始化 IoC 容器的第一步就是需要定位这个外部资源。spring提供了两个接口:Resource、Resou...原创 2019-03-14 00:25:48 · 710 阅读 · 0 评论 -
spring学习(三)——BeanDefinition的拼装(自定义标签解析)
参考文章:http://www.iocoder.cn自定义的标签解析@Nullable public BeanDefinition parseCustomElement(Element ele, @Nullable BeanDefinition containingBd) { // 获取 namespaceUri String namespaceUri = getNam...原创 2019-03-14 00:26:03 · 2407 阅读 · 0 评论 -
spring学习(三)——BeanDefinition的拼装(标签解析:bean补充)
参考文章:http://www.iocoder.cn上文太长了,截断补充构造函数解析parseConstructorArgElements/parseConstructorArgElement完成 constructor-arg 子元素的解析【这里是代码】public void parseConstructorArgElements(Element bea...原创 2019-03-14 00:26:20 · 677 阅读 · 0 评论 -
spring学习(三)——BeanDefinition的拼装(标签解析:bean)
参考文章:http://www.iocoder.cn/解析方法bean解析的方法在:DefaultBeanDefinitionDocumentReader.processBeanDefinition(ele, delegate);相关代码解读在完成注册调用BeanDefinitionParserDelegate#parseBeanDefinitionElement(...原创 2019-03-15 12:38:07 · 161 阅读 · 0 评论 -
spring学习(三)——BeanDefinition的拼装(BeanDefinition接口)
参考文章:http://www.iocoder.cn这篇文章主要对BeanDefinition类进行解析,它是spring对bean的定义BeanDefinition是一个接口,它描述了一个 Bean 实例的定义,包括属性值、构造方法值和继承自它的类的更多信息public interface BeanDefinition extends AttributeA...原创 2019-03-15 12:39:03 · 252 阅读 · 0 评论 -
spring学习(三)——BeanDefinition的拼装
参考文章:http://www.iocoder.cn/编程式加载spring//获取资源ClassPathResource resource = new ClassPathResource("bean.xml");//获取 BeanFactoryDefaultListableBeanFactory factory = new DefaultListableBeanFacto...原创 2019-03-14 00:21:56 · 211 阅读 · 0 评论 -
spring学习(一)——起步
参考文章:http://www.iocoder.cn/IoC 了,作为 Spring 第一个最核心的概念,在面试中经常被问到,也是学习Spring首先需要明白的内容。IOC是什么IoC 全称为Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。所谓 IoC ,就是由 Spri...原创 2019-03-14 00:18:13 · 169 阅读 · 0 评论 -
spring学习(二)——资源获取
参考文章:http://www.iocoder.cn/资源描述:Resource统一的接口public interface Resource extends InputStreamSource { /** * 资源是否存在 */ boolean exists(); /** * 资源是否可读 */ default boolean isRead...原创 2019-03-14 00:19:12 · 314 阅读 · 0 评论 -
spring学习(四)——Bean的加载(开始)
参考文章:http://www.iocoder.cnspring的所有流程容器初始化阶段 加载bean 阶段容器初始化阶段首先,通过某种方式加载 Configuration Metadata (主要是依据 Resource、ResourceLoader 两个体系) 。 然后,容器会对加载的 Configuration MetaData 进行解析和分析,并将分析的信息组装...原创 2019-03-15 12:40:02 · 239 阅读 · 0 评论 -
spring学习(四)——Bean的加载(从缓存获取单例 Bean)
参考文章:http://www.iocoder.cnbean的加载流程从缓存中获得单例的bean的代码位于org/springframework/beans/factory/support/AbstractBeanFactory.java的方法doGetBean代码片段// 从缓存中或者实例工厂中获取 Bean 对象 // Eagerly check single...原创 2019-03-15 12:40:18 · 642 阅读 · 0 评论 -
spring学习(六)——4 Spring的 类型转换
参考文章:http://www.iocoder.cn/在 Spring 容器加载阶段,容器将 xml 文件中定义的<bean>解析为 BeanDefinition,BeanDefinition 中存储着我们定义一个 bean 需要的所有信息,包括属性,这些属性是以 String 类型的存储的。当用户触发 Bean 实例化阶段时,Spring 容器会将这些属性转换为这...原创 2019-03-30 14:08:13 · 867 阅读 · 0 评论 -
spring学习(六)——3.2 Spring的 PostProcessor的使用实例
这是对BeanFactoryPostProcessor使用的一个简单示例。实体@Datapublic class PostProcessorTestEntity { private int id; private String name; }这个是我们做实例时候用的统一的实体。spring.xml结构<?xml ...原创 2019-03-30 13:16:42 · 504 阅读 · 0 评论 -
spring学习(六)——4.1 Spring的 类型转换示例
根据之前的了解,spring类型转换的核心在ConversionService ,它定义了是否可以转换和执行转换的接口。而其中和它关联的子类内容Converter 将 S 类型对象转为 T 类型对象 GenericConverter会根据源类对象及目标类对象所在的宿主类中的上下文信息进行类型转换 ConverterFactory将相同系列多个 “同质” Converter 封装...原创 2019-03-30 15:49:04 · 415 阅读 · 0 评论 -
spring学习(六)——5.1 BeanWrapper
参考文章:http://www.iocoder.cn/实例化 Bean 阶段,我们从 BeanDefinition 得到的并不是我们最终想要的 Bean 实例,而是 BeanWrapperBeanWrapper 是 Spring 框架中重要的组件类,它就相当于一个代理类,Spring 委托 BeanWrapper 完成 Bean 属性的填充工作。在 Bean 实例被 Instant...原创 2019-03-31 00:02:53 · 307 阅读 · 0 评论 -
spring学习(六)——5.2 Bean实例化策略
参考文章:http://www.iocoder.cn/bean的实例化过程AbstractAutowireCapableBeanFactory#doCreateBean(...)方法。在这个方法中有 Bean 的实例化、属性注入和初始化过程。主要是createBeanInstance方法createBeanInstance(...)方法中,如果 Supplier ...原创 2019-04-01 22:39:53 · 948 阅读 · 0 评论 -
spring学习(六)——5.3 spring的BeanDefinitionRegistry
参考文章:http://www.iocoder.cn/Spring实例化bean的时候主要的核心容器 AliasRegistry:用于别名管理的通用型接口,作为 BeanDefinitionRegistry 的顶层接口 BeanDefinitionRegistry:接口定义了关于 BeanDefinition 注册、注销、查询AliasRegistry仅仅是一个顶级...原创 2019-04-01 22:57:33 · 369 阅读 · 0 评论 -
spring学习(六)——5.4 spring的环境
参考文章:http://www.iocoder.cn/Spring 的环境解析由,数据源,解析器,剖面,环境组合Properties的解析器PropertyResolver属性解析器,用于解析任何基础源的属性的接口解析器顶级接口public interface PropertyResolver { // 是否包含某个属性 boolean cont...原创 2019-04-01 23:48:47 · 246 阅读 · 0 评论 -
spring学习(六)——6.1 spring的ApplicationContext
参考文章:http://www.iocoder.cn/虽然bean的创建都是使用BeanFactroy,但是生产环境我们通常会选择 ApplicationContext和BeanFactory 区别继承 MessageSource,提供国际化的标准访问策略。 继承 ApplicationEventPublisher ,提供强大的事件机制。 扩展 ResourceLoader...原创 2019-04-02 21:07:49 · 225 阅读 · 0 评论 -
spring学习(六)——7 spring总结
参考文章:http://www.iocoder.cn/Bean的转换过程xml->BeanApplicationContext 的架构图load BeanDefinition 的全流程get Bean 的全流程转载 2019-04-02 21:10:41 · 133 阅读 · 0 评论 -
spring学习(六)——3.1 Spring的 BeanFactoryPostProcessor
参考文章:http://www.iocoder.cn/Spring 容器启动阶段,Spring 提供了一种容器扩展机制:BeanFactoryPostProcessor,该机制作用于容器启动阶段,允许我们在容器实例化 Bean 之前对注册到该容器的 BeanDefinition 做出修改。BeanFactoryPostProcessor其类图BeanFactoryPos...原创 2019-03-30 11:16:24 · 292 阅读 · 0 评论 -
spring学习(六)——2 Bean的生命周期
参考文章:http://www.iocoder.cn/关于Bean的生命周期,我们先看一张图,这张图标识Bean创建和销毁的流程从上图,我们可以看到整个流程是:bean实例化:创建bean bean实例化:注入属性 激活Aware BeanPostProcessor 前置 初始化init方法 BeanPostProcessor 后置 使用销毁方法其中bean实...原创 2019-03-23 16:04:00 · 185 阅读 · 0 评论 -
spring学习(六)——1.3 initializeBean:InitializingBean 和 init-method
参考文章:http://www.iocoder.cn/bean实例化过程中在激活Aware,调用后置处理之后最后一步是InitializingBean(初始化bean) 和 init-method(调用bean的初始化方法)InitializingBeanbean 提供了定义初始化方法的方式,它仅包含了一个方法:#afterPropertiesSet() 方法在Ab...原创 2019-03-23 15:16:12 · 884 阅读 · 0 评论 -
spring学习(四)——Bean的加载(scope 的 Bean 创建)
参考文章:http://www.iocoder.cn根据之前的代码bean类的创建被分为三种方式singleton :mbd.isSingleton() prototype:mbd.isPrototype() 其他singleton其逻辑代码为if (mbd.isSingleton()) { //单例模式 sharedInstance = getSin...原创 2019-03-15 12:40:54 · 228 阅读 · 0 评论 -
spring学习(五)——Bean的创建(开始)
参考文章:http://www.iocoder.cn/实例化bean的代码入口protected abstract Object createBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) throws BeanCreationException;createBean的代码逻...原创 2019-03-15 15:02:58 · 368 阅读 · 0 评论 -
spring学习(五)——Bean的创建(实例化bean)
参考文章:http://www.iocoder.cn/实例化bean的代码逻辑protected BeanWrapper createBeanInstance(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) { // Make sure bean class is actually res...原创 2019-03-15 15:05:00 · 1921 阅读 · 0 评论 -
spring学习(五)——Bean的创建(属性填充)
参考文章:http://www.iocoder.cn/回到最开始内容,我们知道Bean实例化时候属性填充是在populateBean中的,那么我们看下这个是如何实现的protected void populateBean(String beanName, RootBeanDefinition mbd, @Nullable BeanWrapper bw) { // 不存在实...原创 2019-03-15 15:05:33 · 1607 阅读 · 0 评论 -
spring学习(五)——Bean的创建(初始化bean)
参考文章:http://www.iocoder.cn/回想Bean的创建(开始)内容bean的初始化在,initializeBean中spring 初始化bean的代码入口protected Object initializeBean(final String beanName, final Object bean, @Nullable RootBeanDefinitio...原创 2019-03-15 15:06:33 · 560 阅读 · 0 评论 -
spring学习(五)——Bean的创建(总结)
参考文章:http://www.iocoder.cn/根据前面几章学习,大概可以总结Bean创建的流程启动方法 实例化 属性填充 初始化实例bean 的初始化节点的启动方法,第一次调用 getBean()来开启public Object getBean(String name) throws BeansException { return doGetBean(...原创 2019-03-30 11:14:17 · 554 阅读 · 0 评论 -
spring学习(六)——Spring一些方法和概念的补充
参考文章:http://www.iocoder.cn/开始工作后,没办法一整天在图书馆里学习然后记笔记了。只能把学习时间分散到每一天,为了督促自己尽快完成Spring的相关内容先列出来个目录,争取在一至两周内完成所有的内容。实例化Bean的拓展 (未完成) Aware接口 后置处理器 自定义的初始化方法 Bean的生命周期 容器的拓展 Spring的 BeanF...原创 2019-03-18 21:32:38 · 124 阅读 · 0 评论 -
spring学习(六)——1.1 Aware 接口
参考文章:http://www.iocoder.cn/初始化Bean的主要方法在AbstractAutowireCapableBeanFactory.doCreateBean方法中的initializeBean执行,源码逻辑;protected Object initializeBean(final String beanName, final Object bean, @...原创 2019-03-19 00:20:11 · 281 阅读 · 0 评论 -
spring学习(六)——1.2 后置处理器 BeanPostProcessor
参考文章:http://www.iocoder.cn/Bean初始化的后置处理器,即BeanPostProcessor 接口它为我们提供了丰富的可扩展点,它实现了在 Bean 完成实例化后,如果我们需要对其进行一些配置、增加一些自己的处理逻辑BeanPostProcessor 在源码中的逻辑protected Object initializeBean(fina...原创 2019-03-21 00:54:51 · 308 阅读 · 0 评论 -
spring学习(四)——Bean的加载(不从缓存中获取bean)
参考文章:http://www.iocoder.cn假如spring未从缓存中获得bean的话,执行的业务逻辑//缓存中不存在 else { // Fail if we're already creating this bean instance: // We're assumably within a circular reference. //...原创 2019-03-15 12:40:35 · 774 阅读 · 1 评论 -
SpringBoot源码简读-序章
代码关于spring源码简读应该到此为止了,以后有可能会针对spring一些模块进行详细的阅读,大概的逻辑了解了,要开始详细了解其内容了。官方仓库地址:https://github.com/spring-projects/spring-boot.git本人学习时源码地址:https://gitee.com/daifylearn/spring-boot学习的源码版本(分支):2.0...原创 2019-06-02 10:16:20 · 233 阅读 · 0 评论 -
MyBatis源码简读——2.1.1 配置文件的加载
MyBatis源码中第二部分是一个庞大的部分,同时也是源码笔记的核心。主要内容涉及资源加载,SQL加载,SQL执行和结果集的处理。首先一个比较大的模块是资源的加载。mybatis中我们定义的主要资源主要被分为三个部分配置文件 mapper.xml(定义在xml中的SQL) mapper接口后续还有很多东西需要说,但是首先学习这三部分的加载过程。本篇主要学习的是配置文件的...原创 2019-04-16 23:13:45 · 269 阅读 · 0 评论 -
MyBatis源码简读——2.1.2 mapper映射文件解析
映射文件的解析入口是 org.apache.ibatis.builder.xml.XMLMapperBuilder其主要方法和属性属性首先简单介绍下几个属性的作用builderAssistant,一个mapper构造器的工具 parser:基于java XPath的解析器 resource:资源地址 sqlFragments:是一个map,大概意思是一个可以被其他语句引用...原创 2019-04-17 22:34:10 · 359 阅读 · 0 评论