摘要: IOC容器的初始化过程主要包括BeanDefinition的Resource定位、载入和注册。在实际项目中我们基本上操作的都是ApplicationContex的实现,我们比较熟悉的ClassPathXmlApplicationContext、FileSystemXmlApplicationCont 阅读全文
posted @ 2018-03-05 16:21 两条闲鱼 阅读(817) 评论(0) 推荐(1) 编辑
摘要: 前言 Spring源码继承结构比较复杂,看过以后经常会忘记。因此,记录一下源码分析的过程,方便以后回顾。本次分析的Spring源码版本为3.2.15。 另外,一提Spring就是IOC、DI等等,我们先初步了解一下这些概念。 依赖倒置原则(Dependence Inversion Principle 阅读全文
posted @ 2018-02-08 19:45 两条闲鱼 阅读(831) 评论(0) 推荐(0) 编辑
摘要: Cglib动态代理实现方式 我们先通过一个demo看一下Cglib是如何实现动态代理的。 首先定义个服务类,有两个方法并且其中一个方法用final来修饰。 Cglib是无法代理final修饰的方法的,具体原因我们一会通过源码来分析。 然后,定义一个自定义MethodInterceptor。 我们看一 阅读全文
posted @ 2018-01-30 16:55 两条闲鱼 阅读(36404) 评论(7) 推荐(9) 编辑
摘要: JDK动态代理实现方式 在Spring框架中经典的AOP就是通过动态代理来实现的,Spring分别采用了JDK的动态代理和Cglib动态代理,本文就来分析一下JDK是如何实现动态代理的。 在分析源码之前我们先通过一个简单的例子看看JDK是如何实现动态代理的。 JDK的动态代理是基于接口实现的,所以我 阅读全文
posted @ 2018-01-15 16:50 两条闲鱼 阅读(760) 评论(0) 推荐(0) 编辑
摘要: java.util.concurrent.atomic包中对基本类型进行原子操作的类有:AtomicInteger、AtomicBoolean、AtomicLong。 下面通过一个测试程序来验证一下AtomicInteger真的实现了原子操作 按照我们的预期如果最终结果是0,那么就可以说明确实实现了 阅读全文
posted @ 2018-01-04 19:16 两条闲鱼 阅读(416) 评论(0) 推荐(0) 编辑
摘要: CAS概念 CAS:Compare And Swap,比较并交换。java.util.concurrent包完全是建立于CAS机制之上的。 CAS原理 Java CAS是通过调用Unsafe的native方法,再由C程序调用CPU底层命令实现的。 下面是对应于intel x86处理器的源代码的片段: 阅读全文
posted @ 2018-01-03 19:16 两条闲鱼 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 注解用途 我们在使用spring MVC框架时用到了很多的注解,如:@Controller、@RequestMapping等等,spring框架通过反射获取到标签进行不同的逻辑处理。注解是代码的附属信息,它遵循一个基本原则:注解不能直接干扰程序代码的运行,无论是增加还是删除注解,代码都能正常运行。J 阅读全文
posted @ 2017-12-26 15:45 两条闲鱼 阅读(539) 评论(0) 推荐(0) 编辑