spring源码深入
日G一卒
java高级开发,日拱一卒
展开
-
springmvc
https://www.cnblogs.com/fangjian0423/p/springMVC-directory-summary.html原创 2019-10-05 13:15:45 · 89 阅读 · 0 评论 -
ListableBeanFactory接口
ListableBeanFactory获取bean时,Spring 鼓励使用这个接口定义的api. 还有个Beanfactory方便使用.其他的4个接口都是不鼓励使用的.提供容器中bean迭代的功能,不再需要一个个bean地查找.比如可以一次获取全部的bean(太暴力了),根据类型获取bean.在看SpringMVC时,扫描包路径下的具体实现策略就是使用的这种方式(那边使用的是BeanFact...原创 2019-09-27 21:42:35 · 522 阅读 · 0 评论 -
HierarchicalBeanFactory
BeanFactory分层package org.springframework.beans.factory; //分层工厂public interface HierarchicalBeanFactory extends BeanFactory { //返回工厂的父工厂 BeanFactory getParentBeanFactory(); //这个工厂中是否...原创 2019-09-27 21:30:17 · 248 阅读 · 0 评论 -
HierarchicalBeanFactory接口
HierarchicalBeanFactory 提供父容器的访问功能.至于父容器的设置,需要找ConfigurableBeanFactory的setParentBeanFactory(接口把设置跟获取给拆开了!).HierarchicalBeanFactory源码具体:1、第一个方法返回本Bean工厂的父工厂。这个方法实现了工厂的分层。2、第二个方法判断本地工厂是否包含这个Bean(忽略其...原创 2019-09-27 21:28:57 · 190 阅读 · 0 评论 -
Spring IOC-BeanFactory的继承体系结构
本文主要介绍BeanFactory以及它的各种继承层级的接口、抽象类及实现类,因为内容很多,所以这里不介绍ApplicationContext继承体系下的类(虽然ApplicationContext本质上也是BeanFactory,但是毕竟这这是我们平时接触最多的两种类别,所以分开说)。关于ApplicationContext继承体系结构在《Spring IOC-ApplicationConte...原创 2019-09-23 15:58:27 · 443 阅读 · 0 评论 -
属性编辑器PropertyEditor
在Spring配置文件里,我们往往通过字面值为Bean各种类型的属性提供设置值:不管是double类型还是int类型,在配置文件中都对应字符串类型的字面值。BeanWrapper填充Bean属性时如何将这个字面值转换为对应的double或int等内部类型呢?我们可以隐约地感觉到一定有一个转换器在其中起作用,这个转换器就是属性编辑器。“属性编辑器”这个名字可能会让人误以为是一个带用户界面的输入器,...原创 2019-09-22 15:32:37 · 20548 阅读 · 0 评论 -
java.util.Properties
ava.util.Properties是对properties这类配置文件的映射。支持key-value类型和xml类型两种首先,新建一个文件,如图:然后再Java代码段输入如下代码:import java.io.FileInputStream;import java.io.InputStream;import java.util.Properties; public class ...原创 2019-09-22 14:54:30 · 1178 阅读 · 0 评论 -
java.util.prefs.Preferences
我们经常需要将我们的程序中的设定,如窗口位置,开启过的文件,用户的选项设定等数据记录下来,以做便用户下一次开启程序能继续使用这些数据。以前我们通常的做法是使用Properties类,它提供以下方法:void load(InputStream inStream)void store(OutputStream out, String header)String getProperty(Stri...原创 2019-09-22 11:03:04 · 231 阅读 · 0 评论 -
spring源码分析-core.io包里面的类
前些日子看《深入理解javaweb开发》时,看到第一章java的io流,发觉自己对io流真的不是很熟悉。然后看了下JDK1.7中io包的一点点代码,又看了org.springframework.core.io包的一些类和组织方式,当作是学习吧。总结一下。先挂下spring.core.io包的类图,其中接口是方框表示,抽象类带了abstract前缀,剩下那个两个框重贴的则代表实现类。没怎么划过类图...原创 2019-09-22 10:29:09 · 234 阅读 · 0 评论 -
Thread.getContextClassLoader与Thread.getClassLoader()区别
在阅读spring boot启动时候的源码中,发现获取classLoader使用的是getContextClassLoader于是乎产生了疑问,这种获取ClassLoader的方式与我们最常见的通过Class.getClassLoader二者有什么区别?都是在什么场景下使用呢?首先来看看getClassLoader()方法的注释:Returns the class loader for the...原创 2019-09-21 20:22:22 · 467 阅读 · 0 评论 -
configurablebeanfactory
ConfigurableBeanFactory定义BeanFactory的配置.ConfigurableBeanFactory中定义了太多太多的api,比如类加载器,类型转化,属性编辑器,BeanPostProcessor,作用域,bean定义,处理bean依赖关系,合并其他ConfigurableBeanFactory,bean如何销毁.ConfigurableBeanFactory同时继承...原创 2019-09-27 21:46:51 · 1439 阅读 · 0 评论 -
AutowireCapableBeanFactory接口
AutowireCapableBeanFactory在BeanFactory基础上实现了对存在实例的管理.可以使用这个接口集成其它框架,捆绑并填充并不由Spring管理生命周期并已存在的实例.像集成WebWork的Actions 和Tapestry Page就很实用.一般应用开发者不会使用这个接口,所以像ApplicationContext这样的外观实现类不会实现这个接口,如果真手痒痒可以通过A...原创 2019-09-27 21:49:36 · 333 阅读 · 0 评论 -
springmvc
https://www.cnblogs.com/baiduligang/p/4247164.html原创 2019-10-05 12:14:24 · 89 阅读 · 0 评论 -
spring钩子
Spring钩子方法和钩子接口的使用详解前言SpringFramework其实具有很高的扩展性,只是很少人喜欢挖掘那些扩展点,而且官方的Refrence也很少提到那些Hook类或Hook接口,至于是不是Spring官方有意为之就不得而知。本文浅析一下笔者目前看到的Spring的一些对外开放的扩展点、Hook接口或者Hook类,如果有什么错误,希望多多交流指正,一切以Spring的源码为准,文章...原创 2019-09-29 11:01:37 · 397 阅读 · 0 评论 -
Spring 钩子之BeanFactoryPostProcessor和BeanPostProcessor
BeanFactoryPostProcessor和BeanPostProcessor这两个接口都是初始化bean时对外暴露的入口之一,和Aware类似(PS:关于spring的hook可以看看Spring钩子方法和钩子接口的使用详解讲的蛮详细)本文也主要是学习具体的钩子的细节,以便于实际开发中我们能有效率,例如如何在scala中如何获取springboot的启动类等等,一些中间件为了监控整个系统的...原创 2019-09-29 10:47:03 · 245 阅读 · 0 评论 -
bean的生命周期
原创 2019-09-29 10:15:11 · 81 阅读 · 0 评论 -
Spring ConfigurationClassPostProcessor Bean解析及自注册过程
一,bean的自注册过程二,自注册过程说明1,configurationclassparser解析流程 1、处理@PropertySources注解,配置信息的解析2、处理@ComponentScan注解:使用ComponentScanAnnotationParser扫描basePackage下的需要解析的类(@SpringBootApplication注解也包括了@Component...原创 2019-09-28 20:24:03 · 181 阅读 · 0 评论 -
Spring注解源码分析
我们知道如果想使用spring注解你需要在applicationContext.xml配置文件中设置context:component-scan base-package='xxx’这样spring会帮助我们扫描你所设置的目录里面所有的Bean,如果Bean上面有相应的@Service,@Controller注解(当然还有其他的,这里就不一一列出来),那么Spring的IOC容器将会帮我实例对象,...原创 2019-09-28 20:14:22 · 431 阅读 · 0 评论 -
Spring--Context
应用上下文Spring通过应用上下文(Application Context)装载bean的定义并把它们组装起来。Spring应用上下文全权负责对象的创建和组装。Spring自带了多种应用上下文的实现,它们之间主要的区别仅仅在于如何加载配置。1.AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载 Spring应用上下文。2.Annot...原创 2019-09-28 20:04:46 · 314 阅读 · 0 评论 -
Spring注解配置工作原理源码解析
一、背景知识在【Spring实战】Spring容器初始化完成后执行初始化数据方法一文中说要分析其实现原理,于是就从源码中寻找答案,看源码容易跑偏,因此应当有个主线,或者带着问题、目标去看,这样才能最大限度的提升自身代码水平。由于上文中大部分都基于注解进行设置的(Spring实战系列篇demo大部分也都是基于注解实现的),因此就想弄明白Spring中注解是怎么工作的,这个也是分析上文中实现原理的一...原创 2019-09-28 15:34:21 · 297 阅读 · 0 评论 -
ConfigurableListableBeanFactory
ConfigurableListableBeanFactory 提供bean definition的解析,注册功能,再对单例来个预加载(解决循环依赖问题).貌似我们一般开发就会直接定义这么个接口了事.而不是像Spring这样先根据使用情况细分那么多,到这边再合并ConfigurableListableBeanFactory具体:1、2个忽略自动装配的的方法。2、1个注册一个可分解依赖的方法...原创 2019-09-27 22:02:59 · 1298 阅读 · 0 评论 -
Class.getResource和ClassLoader.getResource
一案例驱动二源码分析三类加载器ClassLoader四总结五参考一案例驱动最近加载文件的时候遇到了一个问题,很有意思! 具体看下面案例代码public class TestClassLoader { public static void main(String[] args) { System.out.println(TestClassLoader.class...原创 2019-09-21 19:58:48 · 173 阅读 · 0 评论 -
java项目中的classpath
在java项目中,你一定碰到过classpath,通常情况下,我们是用它来指定配置/资源文件的路径。在刚开始学习的时候,自己也糊里糊涂,但是现在,是时候弄清楚它到底是指什么了。顾名思义,classpath就是class的path,也就是类文件(*.class的路径)。一谈到文件的路径,我们就很有必要了解一个java项目(通常也是web项目)它在真正运行时候,这个项目内部的目录、文件的结构;这样,...原创 2019-09-21 15:13:55 · 180 阅读 · 0 评论 -
Spring中资源的加载ResourceLoader
Spring中资源的加载是定义在ResourceLoader接口中的,它跟前面提到的抽象资源的关系如下:ResourceLoader的源码public interface ResourceLoader { /** Pseudo URL prefix for loading from the class path: "classpath:" */ String C...原创 2019-09-21 14:55:44 · 866 阅读 · 0 评论 -
spring-beans模块分析
描述:spring-beans负责实现Spring框架的IOC模块UML结构图如下:AbstractBeanFactory:BeanFactory接口的抽象实现类,提供了ConfigurableBeanFactory 完整SPI。通过DefaultSingletonBeanRegistry实现了单例缓存(singleton cache).实现了通过FactoryBean判断bean类型(sin...原创 2019-09-09 14:36:05 · 498 阅读 · 0 评论 -
SpringToolsSuite (STS)或Eclipse安装gradle
对于新手刚进入职场,不知怎么在Spring Tools Suite (STS)或Eclipse上安装gradle,因为该项目自动化构建开源工具在一些企业中是要用的。本经验介绍如何安装。工具/原料Spring Tools Suite (STS)或Eclipse开发工具gradle-5.0-all.zip压缩包下载Gradle 地址:https://gradle.org/releases...原创 2019-09-08 14:08:17 · 314 阅读 · 0 评论 -
本地环境用eclipse搭建spring源码环境
对于JAVA和.NET开发人员来讲Spring框架并不陌生,对于想进行spring源码学习的同学来讲,在本地下载和构建spring项目很有必要。以下简要说明下Spring源码的下载和在eclipse下的构建方式。工具/原料JDKEclipse我们需要从源码库下载Spring的源码文件到本地,现在的spring官方源码都从svn迁移到了GitHub仓库里。我们可以从GitHub仓库下载源代码...原创 2019-09-08 13:54:32 · 1332 阅读 · 0 评论 -
什么是IOC容器
1.IOC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合,更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IOC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的使程序的整个体系结构变得非常灵活。在运行期,在外部容器...原创 2019-09-08 13:51:06 · 98 阅读 · 0 评论 -
Spring-BeanFactory源码分析
正式进入Spring 源码分析这个模块了,对于spring这个庞大的工程,如果要一点点的完全分析是非常困难的,对于应用型框架,我还是偏向于掌握思想或者设计,而不是记住代码,对于初次看spring源码,相信大家都很头大,而且看懂并不一定就是理解了,想要更好的效果,就要记录下来,扯个题外话,LZ觉得写博客真的挺有瘾的,一旦开始写了,就很想继续写,每写完一篇文章,感觉自己有产出,感觉很舒适,但是一旦歇菜...原创 2019-09-07 15:22:47 · 154 阅读 · 0 评论 -
ConfigurableListableBeanFactory
ConfigurableListableBeanFactory 提供bean definition的解析,注册功能,再对单例来个预加载(解决循环依赖问题).貌似我们一般开发就会直接定义这么个接口了事.而不是像Spring这样先根据使用情况细分那么多,到这边再合并ConfigurableListableBeanFactory具体:1、2个忽略自动装配的的方法。2、1个注册一个可分解依赖的方...原创 2019-09-07 14:59:15 · 2987 阅读 · 0 评论 -
Spring的refresh()方法调用过程
Spring的refresh()方法调用过程refresh()是Spring中比较核心的方法,Spring所有的初始化都在这个方法中完成具体代码如下public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { ...原创 2019-09-07 14:51:46 · 1069 阅读 · 0 评论 -
钩子函数和回调函数的区别
一般认为,钩子函数就是回调函数的一种,其实还是有差异的,差异地方就是:触发的时机不同。先说钩子函数:钩子(Hook)概念源于Windows的消息处理机制,通过设置钩子,应用程序对所有消息事件进行拦截,然后执行钩子函数。let btn = document.getElementById("btn");btn.onclick = () => { console.log("i'm ...原创 2019-09-07 12:29:20 · 291 阅读 · 0 评论 -
spring源码解读
spring源码解读转载 2019-09-06 13:59:48 · 133 阅读 · 0 评论 -
Spring源码分析
前言作为一名开发人员,阅读源码是一个很好的学习方式。本文将结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码,若有描述错误之处,欢迎指正。Spring是2003年兴起的一个轻量级Java开源框架,旨在解决企业应用开发的复杂性。Spring发展至今,衍生出非常丰富的模块,并应用在多种场景,比如:桌面应用,Web应用等。Spring的模块化可以允许你只使用需要的模块,而不必...原创 2019-09-17 10:37:23 · 162 阅读 · 0 评论 -
Spring 源码分析 spring-core
先来看下 spring-core 的包结构总共有6个模块,分别是 asm、cglib、core、lang、objenesis、utilasm包: 用来操作字节码,动态生成类或者增强既有类的功能。主要包含以下这些类。详细功能。https://www.ibm.com/developerworks/cn/java/j-lo-asm30/index.htmlcglib包:...原创 2019-09-17 10:39:48 · 431 阅读 · 0 评论 -
Spring 源码分析之AbstractApplicationContext源码分析
首先我觉得分析ApplicationContext必须从它的实现类开始进行分析,AbstractApplicationContext我觉得是一个不错的选择,那我们就从这里开始逐一分析吧,首先我自己手画了一张图,作为索引吧,其中蓝色的为类,紫色的为接口,箭头 指向的方向是父类或者父接口。因为里面接口和方法过多,所以不做展示,下面具体来进行代码分析。首先我们来看看这句话,MESSAGE_SOURC...原创 2019-09-21 11:25:42 · 218 阅读 · 0 评论 -
spring uml
spring执行流程:1: 加载spring.xml文件2: 创建xml文件解析器3: 获取命名空间,即在spring.xml文件中的 http://www.springframework.org/schema/context4: 根据命名空间找到命名空间处理器,在命名空间处理器中包含多个属性解析器:{annotation-config=org.springframework.conte...原创 2019-09-21 11:17:30 · 446 阅读 · 1 评论 -
Spring BeanDefinition
BeanDefinition,顾名思义,是一个对象(Bean)在Spring中描述,其核心类图:从类图我们详细了解BeanDefinition。BeanDefinition接口继承自BeanMetadataElement和AttributeAccessor两个接口。BeanMetadataElement:bean元数据,返回该bean的来源。AttributeAccessor:Spri...原创 2019-09-21 11:11:46 · 88 阅读 · 0 评论 -
spring 源码-context
1 spring-context 模块概要该模块主要实现在spring-beans 模块的扩展,主要对aop支持及el表达式的实现分析示例 public static void main(String[] args){ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spri...原创 2019-09-21 10:37:01 · 491 阅读 · 0 评论 -
Spring Beans 初始化流程分析
Spring Beans 初始化流程分析原创 2019-09-18 19:23:30 · 161 阅读 · 0 评论