spring深度解析专题
打着吊瓶写代码
你现在的气质,源于你走过的路,见过的人,读过的书。
展开
-
写在开头:你为什么需要知道原理与解析准备工作
我一直对自己也对别人说,在你刚开始接触某件事物时,知其然而不知其所以然这是没有任何问题的,毕竟透过现象看本质这需要经验的累积与沉淀,然而,在我们编程这个行业,有太多工作三年,五年甚至更久的同学对自己经常所使用接触的技术还停留在会用的阶段;然而这些同学自认为自己的技术已经登峰造极,认为自己的能力水平早已达到高级工程师,高级架构师的水准,而本质上呢?本质上对各种技术的实现原理是一窍不通,不说网络通信和各种中间件的实现,就拿最常用的Spring来说,你的Bean是怎么生成的?IOC容器又是怎么来管理Bean的?原创 2017-03-14 11:21:48 · 545 阅读 · 0 评论 -
AOP实现之配置文件解析过程(二)
还记得我们在解析IOC时说过的一段代码吗? 相关连接在这里 IOC实现之XML元素解析过程(三) ,这段代码位于DefaultBeanDefinitionDocumentReader类中,当时我们是这样说的:protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate) {原创 2017-04-23 20:33:36 · 1122 阅读 · 0 评论 -
AOP实现之相关概念与准备工作(一)
在讲AOP的实现原理之前,我们有必要先来了解一下什么是Aop,这里我不会说它的众多概念,如果想了解术语概念可以去看其它的文章;在网上或者各大书籍中都有关于AOP中各种概念的解释,比如通知,切面,连接点,切入点,目标类,代理,引入,织入等等概念,我个人觉得没有必要来专研这些学术概念的具体意思,简单的讲,不就是通过一些手段,在调用我们想要调用的方法前后自动的去调用另外的方法么!原创 2017-04-18 21:55:28 · 809 阅读 · 0 评论 -
IOC实现之总结篇(六)
经过5篇文章,IOC的实现过程基本上已经讲清了,当然,还有些我没有讲,比如我们的组件扫描注解的实现又是怎样的,这点我原本打算写篇文章但想想还是放弃了,因为没有必要,看完上面5篇文章,相信你自己已经完全可以去理清注解的实现了!再回到IOC的话题,Spring的IOC作为一个完整的容器产品,通过对它源码的阅读,我们看到了它精妙绝伦的设计,无论是对资源文件的抽象还是对POJO的抽象,Spri原创 2017-04-04 10:35:24 · 441 阅读 · 0 评论 -
IOC实现之Bean的初始化(五)
现在我们开始来解析Bean的初始化过程,通过先前的一系列代码分析,我们得知当BeanFactory构建好后,也就意味着我们的bean配置全部转换成了BeanDefinition类且注册到了当前beanFactory之中,但此时Bean还没有被实例化,需要我们第一次使用到某个bean时,它才会被实例化,当然,也有额外情况,那就是配置了lazy-init为false时,启动容器时这个bean就会被实例原创 2017-04-03 19:06:03 · 470 阅读 · 0 评论 -
IOC实现之XML元素解析过程(四)
接着上篇文章我们继续来做构造器配置与属性配置的解析过程分析;我们先来看看BeanDefinitionParserDelegate是怎么来解析构造属性配置的;public void parseConstructorArgElements(Element beanEle, BeanDefinition bd) { //拿到子元素集合 NodeList nl = beanEle.getC原创 2017-04-03 12:48:20 · 509 阅读 · 0 评论 -
IOC实现之XML元素解析过程(三)
接着上篇文章的最后代码继续我们接下来的分析,接下来会进入下述方法中; //注册beanDefinition public int registerBeanDefinitions(Document doc, Resource resource) throws BeanDefinitionStoreException { //默认使用DefaultBeanDefinitionDocument原创 2017-04-03 11:02:28 · 719 阅读 · 0 评论 -
IOC实现之容器启动与资源定位(二)
回到我们的代码之中,当我们 new ClassPathXmlApplicationContext()时,就代表着在创建一个普通环境上下文,在其构造器中打下断点,我们跟随着断点一步步来往下看;public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, ApplicationContext par原创 2017-04-02 17:44:20 · 484 阅读 · 0 评论 -
IOC实现之BeanFactory体系结构(一)
我们通过讲Spring的容器是怎样启动的,它在启动过程中做了些什么,以此来引发我们IOC原理的解析,在这里我们直接使用编程式的方式来启动容器,而不会涉及到SpringMVC,如果你担心你大多数时候是SpringMVC与Spring一起使用的,看这文章没有用,请放心,在后面解析SpringMVC的时候,你会发现,无论怎么变化,无非是启动容器的触发代码位置不同而已,这里是我们直接写代码,而SpringMVC会通过对Servlet的上下文监听而启动容器...原创 2017-03-14 11:18:44 · 396 阅读 · 0 评论 -
AOP实现之代理bean创建过程(三)
上篇文章中已经讲解完毕spring是怎样来解析我们xml中的aop配置,同时也讲到了在解析过程中,它将会为我们创建几个必要的bean对像,接下来我们就讲解spring是如何来创建我们的代理对象的;在讲IOC的实现原理时,我们就说过,只有我们在第一次使用某个bean的时候,beanFactory才会为我们来创建bean对象(除非设置了lazy-init为false),代理bean的创建和原创 2017-04-26 16:31:58 · 1194 阅读 · 0 评论