• 等级
  • 1273913 访问
  • 133 原创
  • 13 转发
  • 4644 排名
  • 426 评论
  • 930 获赞

Spring IoC:@Autowire详解

前言在SpringIoC:createBean详解(下)中代码块4的7.1.1我们遗留了一个解析——@Autowire注解的属性注入。之所以单独提出来,是因为在我现在接触的项目中,使用@Autowire注解的比例非常高,可以说基本用过Spring的同学都接触过这个注解,重要性不言而喻。因此,单独拿出来,较详细的介绍一下。如何使用1.开启注解配置<?x...

2019-03-03 17:14:18

Spring IoC:createBean详解(下)

前言接着SpringIoC:createBean详解(上),我们继续解析创建Bean实例的剩下内容。正文首先,我们回到SpringIoC:createBean详解(上)中的代码块3,doCreateBean方法。doCreateBeanprotectedObjectdoCreateBean(finalStringbeanName,final...

2019-03-02 23:18:37

Spring IoC:createBean详解(上)

前言接着SpringIoC:getBean详解,我们继续解析获取bean实例里的核心内容:创建bean实例。正文首先,我们进入createBean方法。createBean@OverrideprotectedObjectcreateBean(StringbeanName,RootBeanDefinitionmbd,Object[]a...

2019-03-02 16:21:30

Spring IoC:getBean详解

前言接着SpringIoC:finishBeanFactoryInitialization详解,我们正式开始学习获取bean实例方法,该方法是Spring最核心的方法。正文单击preInstantiateSingletons方法里的getBean(beanName)代码,进入该方法。getBean@OverridepublicObject...

2019-02-27 22:31:02

Spring IoC:finishBeanFactoryInitialization详解

前言在介绍了obtainFreshBeanFactory、invokeBeanFactoryPostProcessors、registerBeanPostProcessors三个重要方法后,我们终于来到了最后一个重要方法:finishBeanFactoryInitialization。finishBeanFactoryInitialization是这四个方法中最复杂也是最重要的,是整个...

2019-02-26 22:05:27

Spring IoC:registerBeanPostProcessors详解

前言在SpringIoC:invokeBeanFactoryPostProcessors解析中我们介绍了invokeBeanFactoryPostProcessors方法,而本文将介绍另一个类似的方法——registerBeanPostProcessors。invokeBeanFactoryPostProcessors方法主要用于处理BeanFactoryPostProces...

2019-02-23 13:56:37

Spring IoC:invokeBeanFactoryPostProcessors详解

前言随着SpringIoC:context:component-scan节点解析的结束,obtainFreshBeanFactory方法的解析也告一段落,我们通过5篇文章,完整的介绍了obtainFreshBeanFactory方法。本文将介绍obtainFreshBeanFactory方法之后的另一个重要方法——invokeBeanFactoryPostProcessors。...

2019-02-22 22:11:36

Spring IoC:context:component-scan节点详解

前言在 SpringIoC:parseCustomElement详解 中,我们介绍了自定义命名空间节点解析的大部分内容,但是还剩下节点解析的具体过程。本文将以<context:component-scan/> 节点为例子,介绍自定义命名空间context 的 component-scan 节点的解析过程。 正文首先,我们回到 SpringIoC:parseCu...

2019-02-17 18:13:46

Spring IoC:parseCustomElement详解

前言我们通过SpringIoC:parseDefaultElement详解(上)、SpringIoC:parseDefaultElement详解(下)解析了默认命名空间节点的解析,本文将解析自定义命名空间节点的解析。正文首先让我们回到SpringIoC:obtainFreshBeanFactory详解文末的parseBeanDefinitions方法。XmlV...

2019-02-16 17:45:30

Spring IoC:parseDefaultElement详解(下)

前言在SpringIoC:parseDefaultElement详解(上)中,我们介绍了BeanDefinition的解析过程。本文将介绍BeanDefinition的注册。正文首先,我们回到processBeanDefinition方法。processBeanDefinitionprotectedvoidprocessBeanDefinit...

2019-01-31 23:08:37

Spring IoC:parseDefaultElement详解(上)

前言接着SpringIoC:obtainFreshBeanFactory详解上文继续往下解析,本文来到parseDefaultElement方法。该方法是解析默认命名空间节点的方法,是加载Bean定义模块的最核心方法。正文首先,我们回到parseDefaultElement方法。parseDefaultElement方法privatevoid...

2019-01-30 22:30:23

Spring IoC:obtainFreshBeanFactory详解

前言上文 SpringIoC:refresh前的环境准备 介绍了 refresh方法前的环境准备操作,接下来正式进入refresh 方法。prepareRefresh 是refresh 里的第一个方法,主要是一些准备工作,比较简单的方法,看一下就了解了。接下来是 obtainFreshBeanFactory 方法,该方法用于获得一个新的BeanFactory,本文将详细介绍该方法。 ...

2019-01-27 00:47:03

位图法:判断一个数是否在40亿个整数中?

题目最近看到一个题目:给40亿个不重复的unsignedint的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? 解法搜了一下资料,该题目是腾讯的一道面试题,目前网上普遍给出的答案有两种。1.《编程珠玑》给出的方案我们把40亿个数中的每一个用32位的二进制来表示,假设这40亿个数开始放在一个文件中。然后将这40亿个数分成两类:1.最高位...

2019-01-26 15:28:10

Spring IoC:refresh前的环境准备

前言在SpringIoC:源码学习总览中,我们简单介绍了IoC过程最重要的一个方法,也就是AbstractApplicationContext#refresh()方法,在详细学习refresh方法之前,还有几个前置操作比较重要,需要稍微介绍下。web.xml配置<?xmlversion="1.0"encoding="UTF-8"?><web-...

2019-01-19 22:34:08

Spring IoC:源码学习总览

前言Spring作为现在最优秀的框架之一,被广泛的应用于Java项目中,但是大多数人都只知道如何使用,而不知其中的原理。对大多数人来说可能知道如何使用已经足够了,但是对于想提升自己的人来说,学习Spring的源码是一个不错的选择。在过去的几个月里,我利用空闲时间将IoC的相关源码学习了一下,按照老习惯准备整理成笔记,以博文的形式记录下来,供自己以后使用,也供其他网友参考。由于涉及到的代...

2019-01-15 00:12:35

Java工具箱

前言本文类似于一个Java开发的“工具箱”,会记录一些Java开发者常用到的东西,例如:工具的一些环境配置、常用的技术网站等。本文不会一下子就有很多内容,会不断的完善。 一、JDK环境变量配置Windows环境1.首先下载一个JDK的exe安装文件,JDK官方下载地址:JDK8、JDK最新版2.将下载好的JDK安装到本地,例如:C:\ProgramFiles\Java\j...

2019-01-13 21:19:43

使用Guava实现限流器

为什么需要限流?在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。限流可以认为服务降级的一种,限流通过限制请求的流量以达到保护系统的目的。一般来说,系统的吞吐量是可以计算出一个阈值的,为了保证系统的稳定运行,一旦达到这个阈值,就需要限制流量并采取一些措施以完成限制流量的目的。比如:延迟处理,拒绝处理,或者部分拒绝处理等等。否则,很容易导致服务器的宕机。现有的方案Google的Guava工...

2018-06-17 13:39:09

MyBatis根据表结构自动生成PO/Mapper代码的最佳实践

前言当我们新建一个表时,在项目中至少要新建3个文件:实体类*PO.java、接口类*POMapper.java、存放SQL的接口实现类*POMapper.xml。对于字段少的表来说,可能你不会在意,但是如果是一个字段超过几十个的表,那你可能要写的头昏眼花了。并且,当字段多了,手写错误的几率特别大。这个时候,我们就需要MyBatis来自动生成。基本使用1.新建配置文件在src/main/resour...

2018-06-04 23:10:42

Log4j2与Slf4j的最佳实践

前言日志对于项目的重要性不言而喻,现在市面上的日志框架多种多样:Log4j、Log4j2、Slf4j、JDKLog、Logback等等,如果没有真正深入了解过,可能会被搞得眼花缭乱。本文将介绍目前Java项目中最常见的Log4j2+Slf4j的使用组合,这也是我自己项目中目前使用的。另外,由于现在项目基本都是Servlet3.0及以上版本,因此本文针对Servlet3.0及更高的版本,如果...

2018-05-07 21:38:30

排序算法:快速排序

概述手写排序算法几乎是程序员面试必问的题目,大多数人都会选择写冒泡排序,如果此时你写的是其他改进过的排序算法,相信会让面试官眼前一亮。本文将介绍常见的排序算法中的“快速排序”。 基本思想快速排序(QuickSort)是对冒泡排序的一种改进。快速排序由C.A.R.Hoare在1962年提出。它的基本思想是:从要排序的数据中取一个数为“基准数”。 通过一趟排序将要排序的数据...

2018-04-24 22:02:57

程序员囧辉

关注
  • 互联网·电子商务/Java开发工程师
  • 中国 上海 长宁区
奖章
  • 专栏达人
  • 持之以恒