NYNYNY

学习有如逆水行舟。

源码学习之AOP(五)-拦截器的实现

接上文介绍了Srping AOP中代理对象的生成,今天介绍下另一个重要部分:拦截器,正是通过拦截器,才能帮我们实现代理的功能。 JdkDynamicAopProxy 在代理模式中,我们实现代理工作是通过实现InvocationHandler接口,重写其中的invoke()方法,在method...

2019-04-18 09:00:43

阅读数 28

评论数 0

源码学习之AOP(四)-代理对象的生成

在Spring AOP中,创建代理对象是很重要的一部分内容,还记得之前写的代理模式的那篇文章么,在那个里面,我们封装了一个getProxy()方法,用来返回生成的代理对象,其实这个就是模仿的Spring的写法,Spring通过AopProxy提供接口方法getProxy()用来获取代理对象,具体的...

2019-04-17 09:50:22

阅读数 20

评论数 0

源码学习之AOP(三)-Spring AOP使用

接上文增强的内容,本文我们将介绍下Spring AOP的使用,以及增强执行的顺序。 在spring中使用aop有很多种选择,即可以选择拥有完整aop解决方案的AspectJ,还可以选择Spring AOP,它侧重于提供和ioc容器整合的AOP实现。我们接下来就介绍下他的两种使用方式:@As...

2019-04-17 09:45:10

阅读数 22

评论数 0

源码学习之AOP(二)-增强使用

在上一篇中,我们介绍了aop相关的基本概念,简单介绍了下Spring AOP中的advice,这一篇我们就来熟悉下这些advice的使用。 增强类型 按照增强在目标类方法中的连接点位置,增强分为以下五类: 前置增强 BeforeAdvice是spring中提供的前置接口,但因为目前只支...

2019-04-17 09:37:19

阅读数 20

评论数 0

代理模式

接之前介绍的策略模式,今天我们学习另一种设计模式:代理模式。 代理模式 定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 它的uml示意图如下所示: 我理解的代...

2019-04-17 09:29:08

阅读数 25

评论数 0

源码学习之Spring AOP(一)-AOP基础

今天开始学习spring中的另一个重要部分:aop,由于aop中涉及到很多相关概念,本文就做一个基础介绍,先让大家认识一下aop。 AOP概念 AOP,也就是面向切面编程。我们都知道java是面向对象的语言,按照这个原则,每个对象都应该只做属于它自己的事(单一职责原则),但在实际开发中,...

2019-04-17 09:18:40

阅读数 26

评论数 0

源码学习之FactoryBean

本篇介绍一下BeanFactory的双胞胎兄弟FactoryBean. FactoryBean介绍 我们从名称上就可以知道FactoryBean是一个bean,只不过这个是一个工厂bean,FactoryBean是spring提供的一个工厂类的接口,通过这个工厂bean可以获取我们需要...

2019-04-17 09:14:21

阅读数 19

评论数 0

源码学习之bean的生命周期

在之前的文章中,我们比较过java bean和spring bean的区别,其中最主要的一点就是spring bean的生命周期是由容器管理的。这里我们就来了解下spring bean的生命周期。 生命周期 spring中的bean从beanDifinition阶段开始,主要经历下面几个过程...

2019-04-17 09:11:55

阅读数 48

评论数 0

源码学习之DI-代码篇

接上文,这里结合源码分析一下依赖注入的过程和实现。 依赖注入触发 依赖注入一般发生在用户首次向容器索取bean时,也就是通过getBean()方法获取需要的bean实例,但是这个也有例外,我们可以通过bean定义的lazy-init = false(默认)让容器完成对bean的预实例化。...

2019-04-17 09:08:54

阅读数 86

评论数 0

源码学习之DI-基础篇

接上文beanDefinition的内容,接下来会介绍spring中的依赖注入部分。 DI 当我们用bean定义来描述一个bean的时候,这个bean往往需要依赖于其他对象,IOC容器在实例化这个bean的时候,会将依赖的对象进行注入,这个过程就叫依赖注入。依赖注入主要有两种方式: Con...

2019-04-17 09:02:57

阅读数 78

评论数 0

源码学习之IOC容器初始化三部曲(三)

接上篇BeanDefinition的载入,本文介绍ioc容器初始化的最后一个内容:BeanDefinition的注册. 注册过程 DefaultBeanDefinitionDocumentReader#processBeanDefinition(): /** * Process ...

2019-04-17 08:57:35

阅读数 21

评论数 0

源码学习之IOC容器初始化三部曲(二)

接上篇BeanDefinition的资源定位,这篇主要介绍BeanDefinition的载入。 BeanDefinition的载入 BeanDefinition的载入过程就是将用户定义的Bean对象解析转换为BeanDifinition对象。 载入过程 接上文介绍到的Resource定位...

2019-04-16 23:06:17

阅读数 17

评论数 0

源码学习之IOC容器初始化三部曲(一)

SpringIOC容器初始化分为三个过程: BeanDefinition的Resource定位 BeanDefinition的载入 BeanDefinition的注册 这里主要介绍Resource定位过程。 Resource的资源定位 我们知道IOC容器中管理的对象是BeanD...

2019-04-16 22:59:13

阅读数 21

评论数 0

源码学习之Bean Definition到BeanDefinition

接上文ioc容器初始化部分,在之前的介绍中,我们介绍了整个ioc容器初始化的过程,但是对于其中的BeanDefinition的解析部分一笔带过,这里就对BeanDefinition做个介绍。 Bean Definition 在IOC容器中,管理的对象是Bean,对于配置文件来说,他们就是...

2019-04-16 21:09:56

阅读数 14

评论数 0

源码学习之Spring IOC容器体系

ApplicationContext为应用提供配置,通过: ListableBeanFactory可以访问应用中的组件; ResourceLoader可以加载资源; ApplicationEventPublisher可以注册监听器分发事件; MessageSource可以支持国际化;

2019-04-16 20:45:10

阅读数 25

评论数 0

Redis学习(二)-Redis进阶

Redis的key过期淘汰策略 Redis支持对key设置过期时间,对于这些过期的key并不是到了过期时间就马上被清理,Redis提供了三种机制来保证对过期key的清理: 定时删除:在设置过期时间的同时,设置一个定时器用来清理key 缺点: 会占用cpu 惰性删除:当调用到key时...

2019-03-10 23:02:48

阅读数 8

评论数 0

Redis学习(一)-Redis介绍

Redis介绍 Redis 是一个开源免费的,遵守BSD协议的高性能key-value数据库。 Redis特点 Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Red...

2019-03-10 22:55:14

阅读数 15

评论数 0

SpringMVC启动流程分析

*基于3.1.2 我们知道web.xml是一个web应用的核心配置文件,也是我们认识应用的最佳途径,这次我们同样从web.xml入手.通过分析里面的配置进而了解整个spring的启动流程. 以目前正在经手的项目实例为参考,附上web.xml中的主要配置(仅附上涉及到spring的部分,业务...

2018-11-16 20:04:43

阅读数 31

评论数 0

Spring配置解析之Component-scan解析

*基于3.1.2进行源码解析. 首先看一段项目中关于component-scan的配置: <context:component-scan base-package="com.suning.rsc.server,com.suning....

2018-11-15 17:00:26

阅读数 60

评论数 0

Java IO之OutputStream

Java io中通过InputStream字节输入流用来将数据读取到内存中,同时也提供了字节输出流OutputStream用来从内存中读取数据。          和InputStream结构类似,我们也通过以下几个类来了解OutputStream。          OutPutStr...

2018-09-05 21:32:25

阅读数 194

评论数 0

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