- 博客(9)
- 收藏
- 关注
原创 spring IOC 源码阅读(六)之单实例bean的创建
在创建完事件传播器并将所有ApplicationListener注册到时间传播器中后,就开始创建剩余的单实例bean了。剩下会通过调用beanFactory的preInstantiateSingletons方法进行创建protected void finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory) { ...... //创建剩余的单实例bean beanFactory.preIn
2020-07-15 01:41:32 200
原创 spring IOC 源码阅读(五)之初始化传播器
接下来看初始化事件传播器和将所有ApplicationListener注册到时间传播器中这两块内容初始化事件传播器如果容器中已经有名称为applicationEventMulticaster的单实例bean或者BeanDefinition,则通过beanFactory.getBean()获取bean对象,并赋值给成员变量applicationEventMulticaster 如果容器中没有,则创建一个SimpleApplicationEventMulticaster类型的对象赋值给成员变量appl
2020-07-13 13:47:32 110
原创 spring IOC 源码阅读(四)之registerBeanPostProcessors(beanFactory)
执行完BeanFactoryPostProcessors之后,就要向容器中注册BeanPostProcessor了首先获取到所有BeanPostProcessor的名称 遍历这些BeanPostProcessor 如果是PriorityOrdered级别的,那就创建这个bean并添加到priorityOrderedPostProcessors 集合中区 如果是Ordered级别的,则将beanName添加到orderedPostProcessorNames 集合中 如果既不是Priority
2020-07-13 01:22:23 180
原创 spring IOC 源码阅读(三)之invokeBeanFactoryPostProcessors(beanFactory)
做完beanFactory的创建,接下来就是执行BeanFactoryPostProcessors的接口执行BeanDefinitionRegistryPostProcessor类型的BeanFactoryPostProcessors 从beanFactory中获取到所有BeanDefinitionRegistryPostProcessor类型的beanName 首先获取到所有PriorityOrdered级别的BeanDefinitionRegistryPostProcessor,并通过be
2020-07-13 01:17:38 148
原创 spring IOC 源码阅读(二)之创建beanFactory及初始化
在上一节中我们看来refresh()方法的作用,其中第一步就是创建并初始化beanFactory在refresh()有行代码是做了创建并初始化beanFactory的工作//创建beanFactory ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(); //BeanFactory的预准备工作prepareBeanFactory(beanFactory);首先先obtainFreshBeanFac
2020-07-13 01:12:48 227 1
原创 spring IOC 源码阅读(一)之refresh()
从AnnotationConfigApplicationContext开始看springIOC源码下面是一个简单的spring的代码@Configurationpublic class SpringConfig { @Bean public Bean1 bean(){ return new Bean1(); } public static void main(String[] args) { AnnotationConfigApplicationContext applicati
2020-07-13 00:54:09 136
原创 netty源码阅读(二)之服务端启动——创建并初始化服务端Channel
服务端启动可以分为四个步骤1)创建服务端Channel2)初始化Channel3)注册Selector4)绑定端口1、创建服务端Channel 在上一节的服务端demo中可以看到调用了ServerBootstrap的bind方法,这个个方法就是服务端启动的入口,进入这个方法一路追寻下去最终调用了doBind方法: public ChannelFuture b...
2018-08-05 23:50:29 230
原创 我的自定义控件之旅——自定义进度条
上次做一个项目看到一个很简约的进度条,然后就做了一个,结果发现这个进度条网上的做法有好多,不过也不管了,毕竟是自己亲手做的微笑先来看看样子 一、首先讲下要用到的两个函 在自定义中最重要的就是onMeasure、onDraw以及onLayout了,此次我们用到的是前两个 onMeasur():这个方法是用来测量View的大小的(宽高) 用户在这个函数里先计
2017-08-06 20:20:44 326
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人