Spring源码阅读7-IOC容器-IOC容器相关特性解析

前面我们分析了Bean的创建和依赖注入,在分析的过程中,有一些代码没有在前面的内容中提及到。下面我们会将关键的部分解析下。 容器的初始化 在Resourse的定位章节中,类AbstractApplicationContext中有如下的代码片段: public void refresh() thro...

2019-05-16 10:05:40

阅读数 17

评论数 1

Spring源码阅读6-IOC容器-IOC容器的依赖注入

前面我们分析了BeanDefinition的载入和注册过程, 在此过程中,没有对Bean依赖关系的注入。下面我们将分析依赖注入发生的时机。 在spring中,依赖注入发生的时机有2种: 用户第一次向IOC容器索要Bean的时候 配置了Lazy-init属性的Bean将会在初始化的过程中完成依赖的...

2019-05-16 10:03:07

阅读数 12

评论数 0

Spring源码阅读5-IOC容器-BeanDefinition的注册

在上一节,我们得到了BeanDefinitionHolder对象,即将Bean的解析和载入完成了,下面将会对这个对象进行注册到容器中。 在前面我们提到过,IOC容器实际上是一个Map, 在这里将得到验证。 我们从前面的分析得到,在DefaultBeanDefinitionDocumentReade...

2019-05-16 10:00:36

阅读数 8

评论数 0

Spring源码阅读4-IOC容器-BeanDefinition的载入和解析

在上一节中,我们读源码到Resource的定位部分。 当DefaultResourceLoader返回Resource后,在AbstractBeanDefinitionReader中会对得到的Resource进行读取和解析。 下面是AbstractBeanDefinitionReader中对应的方...

2019-05-16 09:52:12

阅读数 14

评论数 0

Spring源码阅读3-IOC容器-BeanDefinition的Resource定位

后续我将会按照一个具体的demo, 一步一步的跟进容器的启动过程。 首先构建一个Main, 用于启动容器。 public class Main { public static void main(String[]arg){ ApplicationContext applic...

2019-05-14 16:46:44

阅读数 16

评论数 0

Spring源码阅读2-IOC容器-IOC设计整体架构

Spring IOC 容器实现整体概述 在Spring中,IOC容器的设计中,主要分为2种具体的表现形式: BeanFactory为代表的容器 ApplicationContext为代表的应用上下文容器 IOC容器到底是什么? 如果用一句话来表述,Ioc容器的底层数据结构,就是一个Map, 保...

2019-05-14 16:45:23

阅读数 13

评论数 0

Spring源码阅读1-IOC容器-IOC相关概念

IOC相关概念 自工作以来,使用Spring已经快3年了,之前主要是关注如何使用Spring,对其内部精致的构建没有涉及或者只有部分的涉及,为了更好的了解Spring的精髓和提高自己的简介,将之前学习Spring的文章和笔记,以及源码的阅读进行整理,形成该系列的文章,以供自己学习和反思。 控制反转...

2019-05-14 16:41:59

阅读数 14

评论数 0

Tbschedule源码阅读6:对分布式调度系统的思考

虽然把Tbschedule的源码读了一遍,但是如果说让自己来设计一个分布式的调度系统,顿时感觉源码又白读了,我还是不会。那从里面学习到了什么呢?细想一下,能够找出来的东西屈指可数,CopyOnWriteArrayList的用法?Synchroniezed关键字用法又回忆了一次?很显然,这不是我想要...

2018-06-16 15:35:48

阅读数 138

评论数 0

Tbschedule源码阅读5:TbSchedule任务的执行

终于到了任务执行阶段,当manager(或者在任务恢复/暂停Timer里)调用resume后,会启动执行线程执行任务。根据配置的参数,启动1个或者多个线程去执行线程。具体的流程如下: 1.若调度被停止,那么将当前线程移除,若是最后一个线程,还需要注销调度服务(也就是将manager中的proc...

2018-06-16 11:45:45

阅读数 176

评论数 0

Tbschedule源码阅读4:TbSchedule调度机的创建-----任务恢复暂停Timer(PauseOrResumeScheduleTask)

在任务管理线程中,当根据配置计算完成任务第一次执行开始时间和第一次结束开始时间后,将启动任务恢复/暂停调度Timer, 在该timer中主要有以下事情需要做: 1.取消调度(this.cancel):启动调度后只能执行一次。 2.若为暂停调度 2.1 若暂停调度设置为false,那么执行如下...

2018-06-16 11:41:58

阅读数 51

评论数 0

Tbschedule源码阅读4:TbSchedule调度机的创建-----任务恢复暂停Timer(PauseOrResumeScheduleTask)

在任务管理线程中,当根据配置计算完成任务第一次执行开始时间和第一次结束开始时间后,将启动任务恢复/暂停调度Timer, 在该timer中主要有以下事情需要做: 1.取消调度(this.cancel):启动调度后只能执行一次。 2.若为暂停调度 2.1 若暂停调度设置为false,那么执行如下...

2018-06-16 11:41:56

阅读数 69

评论数 0

Tbschedule源码阅读3:TbSchedule调度机的创建-----心跳Timer

心跳Timer实在创建调度机的时候(构造函数中)启动的。心跳Timer的主要作用是定时写入调度机的信息,任务分片的重新分配,加载最新任务分片; 1.重写调度信息 1.1判断是否被停止调度,若停止,方法直接返回,否则到1.2 1.2发送心跳信息(写入当前调度服务的信息,执行情况),...

2018-06-16 11:38:42

阅读数 64

评论数 0

Tbschedule源码阅读2:TbSchedule调度机的创建-----管理线程组的启动

当管理工厂Timer到达执行时间后,会新启动一个调度ManagerFactoryTImer,调度会根据实时的调度任务和机器信息重新计算每个策略在每个机器上分配的调度管理线程组个数。若当前调度管理器个数不足,那么需要新增。此时则需要创建一个管理线程组。 在创建的时候,构造器中的操作包括:1.将对调...

2018-06-16 11:26:50

阅读数 82

评论数 0

Tbschedule源码阅读1:Tbschedule调度之初始化---启动

启动这块的内容比较简单,但是是整个调度系统的入口,主要是一些节点的初始化和管理工厂Timer的启动。 在Schedule.xml配置文件中,配置TBScheduleManagerFactory的Bean. 当容器初始化的时候,首先加载一些配置信息,然后开启一个线程(MangerFactory-i...

2018-06-16 11:18:58

阅读数 90

评论数 0

Netty-认识netty

好久没有在博客上写作笔记了,最近公司项目有使用到netty,作为一个之前对netty没有使用过的小白来说,后面我会系统的学习相关的知识,并将项目中用到的技术记录下来,以供学习,后面争取每周发一篇内容。netty是什么对于我个人理解而言,netty就是一个框架,一个网络编程的框架,更加偏激的理解就是...

2018-01-14 17:21:23

阅读数 98

评论数 0

Mybatis 学习之API

几个重要的类SqlSession取映射器和管理事务, 所有执行语句的方法,提交或回滚事务,还有获取映射器实例SqlSessionFactory获取 一个 SqlSession 实例。 有很多的相关方法创建SqlSession.SqlSessionFactoryBuilderSqlSessionF...

2017-02-25 11:45:55

阅读数 857

评论数 0

Mybatis学习三之动态SQL

动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似。MyBatis 采用功能强大的基于 OGNL 的表达式来消除其他元素。主要有以下几个元素: 1. if 2. choose(when, otherwise) 3. trim(where,set) 4. forea...

2017-02-21 20:18:24

阅读数 178

评论数 0

Mybatis学习二之Mapper XML 文件

SQL映射文件SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):cache – 给定命名空间的缓存配置。 cache-ref – 其他命名空间缓存配置的引用。 resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。 parameterMa...

2017-02-19 21:42:40

阅读数 293

评论数 0

Mybatis学习笔记

What is MybatisMyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain...

2017-02-13 20:56:46

阅读数 496

评论数 0

Mybatis学习笔记

What is MybatisMyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain...

2017-02-13 20:56:15

阅读数 758

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭