照虎画猫写自己的Spring】的更多相关文章

前言 上篇<照虎画猫写自己的Spring>从无到有讲述并实现了下面几点 声明配置文件,用于声明需要加载使用的类 加载配置文件,读取配置文件 解析配置文件,需要将配置文件中声明的标签转换为Fairy能够识别的类 初始化类,提供配置文件中声明的类的实例 一句话概括:不借助Spring容器,实现了Bean的加载和实例化 要想契合Fairy取名时的初衷(东西不大,但是能量无穷),只有一套加载Bean的机制是远远不够的,所以还是需要照虎画猫,完善这个小精灵. Spring之所以在Java企业级开发的众多…
从细节跳出来 看了部分Spring的代码,前面用了四篇内容写了一些读书笔记. 回想起来,论复杂度,Spring够喝上好几壶的.他就像一颗枝繁叶茂的大树,远处看,只是一片绿:走近看,他为你撑起一片小天地,为你遮风避雨:往深了看,他盘根错节,根基夯实. 在看Spring代码的过程中,我几度有些迷糊,因为一行简单的函数调用,你要是一直跟踪下去,从一个函数跳到另一个函数,又从一个类进入到另一个接口或者代理类,可能原本你只想知道函数做了什么,等回过头来,你发现已经找不到回去的路-- 所以,每写一篇的时候,…
Fairy已经实现的功能 读取XML格式配置文件,解析得到Bean 读取JSON格式配置文件,解析得到Bean 基于XML配置的依赖注入 所以,理所当然,今天该实现基于注解的依赖注入了. 基于XML配置文件方式的依赖注入一直是使用依赖注入的标配.使用配置文件让开发变的更加灵活,告别了硬编码和扩展性差的问题. 但是,随着时间的推移以及大量开发人员的深度使用,越发觉得配置文件显得非常臃肿和复杂.Spring也是如此的敏锐和贴心,给我们带了很多的注解,好比我们每天都要用的@Autowired,这样我们…
前言:上一篇博客自己动手编写spring IOC源码受到了大家的热情关注,在这里博客十分感谢.特别是给博主留言建议的@玛丽的竹子等等.本篇博客我们继续,还是在原有的基础上进行改造.下面请先欣赏一下博主画的一张aop简图(没有艺术天分,画的不好莫见怪) 解析:往往在我们的系统的多个核心流程中会有一部分与之关系不大的相同的横切流程,例如权限认证,事务管理.因此我们一般会抽象出这些相同的比较次要的交给spring aop的Handler来统一处理这些横切流程也就是上图中绿色部分.接下来我们看一下本例结…
前言 Sping的生态圈已经非常大了,很多时候对Spring的理解都是在会用的阶段,想要理解其设计思想却无从下手.前些天看了某某学院的关于Spring学习的相关视频,有几篇讲到手写Spring源码,感觉有些地方还是说的挺好的,让博主对Spring的理解又多了一些,于是在业余时间也按照视频讲解实现一遍SpringIOC.DI.MVC的设计思想,加深巩固记忆,也便于初学者理解,我们不用重复造轮子,但得知道轮子怎么造. 开发工具 环境:jdk8 + IDEA + maven jar包:javax.se…
本次博客的目标 1. 手写spring循环依赖的整个过程 2. spring怎么解决循环依赖 3. 为什么要二级缓存和三级缓存 4. spring有没有解决构造函数的循环依赖 5. spring有没有解决多例下的循环依赖. 一.  什么是循环依赖? 如下图所示: A类依赖了B类, 同时B类有依赖了A类. 这就是循环依赖, 形成了一个闭环 如上图: A依赖了B, B同时依赖了A和C , C依赖了A. 这也是循环依赖. , 形成了一个闭环 那么, 如果出现循环依赖, spring是如何解决循环依赖问…
Spring 扩展点 **本人博客网站 **IT小神 www.itxiaoshen.com 官网地址****:https://spring.io/projects/spring-framework The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deploy…
Spring太复杂了,配置这个东西简直就是浪费生命.尤其在没有什么并发压力,随便搞一个RESTful服务 让整个业务跑起来先的情况下,更是么有必要纠结在一堆的XML配置上.显然这么想的人是很多的,于是就 有了Spring Boot.又由于Java 8太墨迹于是有了Kotlin. 数据源使用MySql.通过Spring Boot这个基本不怎么配置的,不怎么微的微框架的Spring Data JPA和Hibernate 来访问数据. 处理依赖 这里使用Gradle来处理依赖. 首先下载官网给的初始项…
前言 之前参与的新开放平台研发的过程中,由于不同的接口需要对不同的入参进行校验,这就涉及到通用参数的校验封装,如果不进行封装,那么写出来的校验代码将会风格不统一.校验工具类不一致.维护风险高等其它因素,于是我对其公共的校验做了一个封装,达到了通过注解的方式即可实现参数统一校验. 遇到的问题                     在封装的时候就发现了一个问题,我们是开放平台,返回的报文都必须是统一风格,也就是类似于{code:999,msg:"参数校验失败",data:null} 这种…
背景 Spring 框架提供了许多接口,可以使用这些接口来定制化 bean ,而非简单的 getter/setter 或者构造器注入.细翻 Spring Cloud Netflix.Spring Cloud Alibaba 等这些构建在 Spring Framework 的成熟框架源码,你会发现大量的扩展 bean 例如 Eureka 健康检查 package org.springframework.cloud.netflix.eureka; public class EurekaHealthC…