Spring
loveNY啊
我想做真正的程序员啊
展开
-
源码学习之Spring IOC容器体系
ApplicationContext为应用提供配置,通过:ListableBeanFactory可以访问应用中的组件;ResourceLoader可以加载资源;ApplicationEventPublisher可以注册监听器分发事件;MessageSource可以支持国际化;原创 2019-04-16 20:45:10 · 141 阅读 · 0 评论 -
源码学习之AOP(四)-代理对象的生成
在Spring AOP中,创建代理对象是很重要的一部分内容,还记得之前写的代理模式的那篇文章么,在那个里面,我们封装了一个getProxy()方法,用来返回生成的代理对象,其实这个就是模仿的Spring的写法,Spring通过AopProxy提供接口方法getProxy()用来获取代理对象,具体的实现则是交由自己的子类实现。AopProxy 我们先来...原创 2019-04-17 09:50:22 · 298 阅读 · 0 评论 -
源码学习之AOP(三)-Spring AOP使用
接上文增强的内容,本文我们将介绍下Spring AOP的使用,以及增强执行的顺序。 在spring中使用aop有很多种选择,即可以选择拥有完整aop解决方案的AspectJ,还可以选择Spring AOP,它侧重于提供和ioc容器整合的AOP实现。我们接下来就介绍下他的两种使用方式:@AspectJ和Schema-based AOP.@Aspe...原创 2019-04-17 09:45:10 · 312 阅读 · 0 评论 -
源码学习之AOP(二)-增强使用
在上一篇中,我们介绍了aop相关的基本概念,简单介绍了下Spring AOP中的advice,这一篇我们就来熟悉下这些advice的使用。增强类型 按照增强在目标类方法中的连接点位置,增强分为以下五类:前置增强BeforeAdvice是spring中提供的前置接口,但因为目前只支持方法级别的通知,所以真正使用的前置增强接口是MethodBeforeAdv...原创 2019-04-17 09:37:19 · 164 阅读 · 0 评论 -
源码学习之Spring AOP(一)-AOP基础
今天开始学习spring中的另一个重要部分:aop,由于aop中涉及到很多相关概念,本文就做一个基础介绍,先让大家认识一下aop。AOP概念 AOP,也就是面向切面编程。我们都知道java是面向对象的语言,按照这个原则,每个对象都应该只做属于它自己的事(单一职责原则),但在实际开发中,有些场景用面向对象不是很好理解,比如对一个工程的所有方法都添加一个打...原创 2019-04-17 09:18:40 · 140 阅读 · 0 评论 -
源码学习之FactoryBean
本篇介绍一下BeanFactory的双胞胎兄弟FactoryBean.FactoryBean介绍我们从名称上就可以知道FactoryBean是一个bean,只不过这个是一个工厂bean,FactoryBean是spring提供的一个工厂类的接口,通过这个工厂bean可以获取我们需要的bean实例。当我们通过getBean()来获取bean时,通过这个bean...原创 2019-04-17 09:14:21 · 114 阅读 · 0 评论 -
源码学习之bean的生命周期
在之前的文章中,我们比较过java bean和spring bean的区别,其中最主要的一点就是spring bean的生命周期是由容器管理的。这里我们就来了解下spring bean的生命周期。生命周期 spring中的bean从beanDifinition阶段开始,主要经历下面几个过程:实例化 属性填充 BeanNameAware/BeanFactoryA...原创 2019-04-17 09:11:55 · 154 阅读 · 0 评论 -
源码学习之DI-代码篇
接上文,这里结合源码分析一下依赖注入的过程和实现。依赖注入触发 依赖注入一般发生在用户首次向容器索取bean时,也就是通过getBean()方法获取需要的bean实例,但是这个也有例外,我们可以通过bean定义的lazy-init = false(默认)让容器完成对bean的预实例化。这样依赖注入就会随着容器的初始化而完成。依赖注入实现 get...原创 2019-04-17 09:08:54 · 404 阅读 · 0 评论 -
源码学习之DI-基础篇
接上文beanDefinition的内容,接下来会介绍spring中的依赖注入部分。DI 当我们用bean定义来描述一个bean的时候,这个bean往往需要依赖于其他对象,IOC容器在实例化这个bean的时候,会将依赖的对象进行注入,这个过程就叫依赖注入。依赖注入主要有两种方式:Constructor-based dependency injectio...原创 2019-04-17 09:02:57 · 216 阅读 · 0 评论 -
源码学习之IOC容器初始化三部曲(三)
接上篇BeanDefinition的载入,本文介绍ioc容器初始化的最后一个内容:BeanDefinition的注册.注册过程DefaultBeanDefinitionDocumentReader#processBeanDefinition():/** * Process the given bean element, parsing the bean defini...原创 2019-04-17 08:57:35 · 110 阅读 · 0 评论 -
源码学习之IOC容器初始化三部曲(二)
接上篇BeanDefinition的资源定位,这篇主要介绍BeanDefinition的载入。BeanDefinition的载入BeanDefinition的载入过程就是将用户定义的Bean对象解析转换为BeanDifinition对象。载入过程 接上文介绍到的Resource定位部分:AbstractBeanDefinitionReader#loadB...原创 2019-04-16 23:06:17 · 136 阅读 · 0 评论 -
源码学习之IOC容器初始化三部曲(一)
SpringIOC容器初始化分为三个过程:BeanDefinition的Resource定位 BeanDefinition的载入 BeanDefinition的注册这里主要介绍Resource定位过程。Resource的资源定位 我们知道IOC容器中管理的对象是BeanDefinition,这是POJO对象在spring内部的存储形式 ,我们所说的Resourc...原创 2019-04-16 22:59:13 · 198 阅读 · 0 评论 -
源码学习之Bean Definition到BeanDefinition
接上文ioc容器初始化部分,在之前的介绍中,我们介绍了整个ioc容器初始化的过程,但是对于其中的BeanDefinition的解析部分一笔带过,这里就对BeanDefinition做个介绍。Bean Definition 在IOC容器中,管理的对象是Bean,对于配置文件来说,他们就是<bean>标签配置的对象,这就是我们对Bean的定义...原创 2019-04-16 21:09:56 · 174 阅读 · 0 评论 -
源码学习之AOP(五)-拦截器的实现
接上文介绍了Srping AOP中代理对象的生成,今天介绍下另一个重要部分:拦截器,正是通过拦截器,才能帮我们实现代理的功能。JdkDynamicAopProxy 在代理模式中,我们实现代理工作是通过实现InvocationHandler接口,重写其中的invoke()方法,在method.invoke()前后加入我们需要代理的逻辑,在JdkDynamicAopPro...原创 2019-04-18 09:00:43 · 1178 阅读 · 0 评论