
Spring核心原理
文章平均质量分 89
Tom 弹架构
咕泡教育联合创始人、Java架构师丛书作者
展开
-
Spring中BeanFactory和FactoryBean的区别?
需要面试文档扫文章尾部二维码+\/免费拿!一位工作了4年的小伙伴,去京东面试被问到这样一个问题,Spring中的BeanFactory和FactoryBean有什么区别?因为没有看过源码,当时就感觉这是一个文字游戏,感觉没什么区别?那今天,我就给大家来聊清楚。另外,往期面试题解析中配套的文档我已经准备好,想获得的可以在我的煮叶简介中找到。好了,我们先来看BeanFactory。1、BeanFactory在Spring中最核心的就是Ioc容器,它保存了所有需要对...原创 2022-05-28 15:04:24 · 334 阅读 · 0 评论 -
肝了30天总结,史上最全面透彻的Spring核心原理分析和27道高频面试题
在阅读面试题之前,小伙伴们可以先看看我之前发布的系列文章,Spring核心原理包括源码分析和用30个类手写。面试刷题固然很重要,但是知其然知其所以然更重要。1 Spring环境预热篇标题备注Tom弹架构:Spring 5系统架构2021/12/01已更新Tom弹架构:Spring版本命名规则2021/12/02已更新Tom弹架构:基于Gradle的Spring源码下载及构建技巧2021/12/03已更新2 30个类手写实战篇标题备注Tom原创 2021-12-30 13:39:27 · 251 阅读 · 0 评论 -
Spring核心原理之 IoC容器中那些鲜为人知的细节(3)
本文节选自《Spring 5核心原理》Spring IoC容器还有一些高级特性,如使用lazy-init属性对Bean预初始化、使用FactoryBean产生或者修饰Bean对象的生成、IoC容器在初始化Bean过程中使用BeanPostProcessor后置处理器对Bean声明周期事件进行管理等。1 关于延时加载我们已经知道,IoC容器的初始化过程就是对Bean定义资源的定位、载入和注册,此时容器对Bean的依赖注入并没有发生,依赖注入是在应用程序第一次向容器索取Bean时通过getBean(.原创 2021-12-25 15:50:39 · 565 阅读 · 0 评论 -
Spring核心原理之IoC容器初体验(2)
本文节选自《Spring 5核心原理》1 IoC与DI基本概念IoC(Inversion of Control,控制反转)就是把原来代码里需要实现的对象创建、依赖,反转给容器来帮忙实现。我们需要创建一个容器,同时需要一种描述来让容器知道要创建的对象与对象的关系。这个描述最具体的表现就是我们所看到的配置文件。DI(Dependency Injection,依赖注入)就是指对象被动接受依赖类而不自己主动去找,换句话说,就是指对象不是从容器中查找它依赖的类,而是在容器实例化对象时主动将它依赖的类注入给.原创 2021-12-24 13:55:31 · 143 阅读 · 0 评论 -
Spring核心原理分析之MVC九大组件(1)
本文节选自《Spring 5核心原理》1 什么是Spring MVCSpring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet。Spring MVC 角色划分清晰,分工明细。由于 Spring MVC 本身就是 Spring 框架的一部分,可以说和 Spring 框架是无缝集成。性能方面具有先天的优越性,是当今业界最主流的 Web 开发框架,最热门的开发技能。首先从一个由Spring提供的DispatcherServlet开始,.原创 2021-12-22 13:43:49 · 557 阅读 · 0 评论 -
Spring核心之IoC容器初体验
1 再谈 ...原创 2021-10-20 17:15:00 · 133 阅读 · 0 评论 -
Spring 5系统架构
Spring大约有20个模块,由1300多个不同的文件构成。这些模块可以分为核心容器、AOP和设备支持、数据访问与集成、Web组件、通信报文和集成测试、集成兼容等类。Spring 5的模块结构如下图所示。 ...原创 2021-10-20 00:38:00 · 99 阅读 · 0 评论 -
Spring版本命名规则
1 常见软件的版本命名 常见软件的版本命名举例如下表所示。 ...原创 2021-10-21 13:19:00 · 160 阅读 · 0 评论 -
Spring源码下载及构建技巧
1 Spring 5 ...原创 2021-10-18 17:05:00 · 247 阅读 · 0 评论 -
30个类手写Spring核心原理之动态数据源切换(8)
本文节选自《Spring 5核心原理》阅读本文之前,请先阅读以下内容:30个类手写Spring核心原理之自定义ORM(上)(6)30个类手写Spring核心原理之自定义ORM(下)(7)4 动态数据源切换的底层原理这里简单介绍一下AbstractRoutingDataSource的基本原理。实现数据源切换的功能就是自定义一个类扩展AbstractRoutingDataSource抽象类,其实相当于数据源的路由中介,可以实现在项目运行时根据相应key值切换到对应的DataSource上。先看看.原创 2021-12-21 13:20:52 · 559 阅读 · 0 评论 -
30个类手写Spring核心原理之自定义ORM(下)(7)
本文节选自《Spring 5核心原理》3 基于Spring JDBC实现关键功能3.1 ClassMappingsClassMappings主要定义基础的映射类型,代码如下:package com.tom.orm.framework;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;import java.math.BigDecimal;.原创 2021-12-17 14:05:16 · 1000 阅读 · 0 评论 -
30个类手写Spring核心原理之自定义ORM(上)(6)
本文节选自《Spring 5核心原理》1 实现思路概述1.1 从ResultSet说起说到ResultSet,有Java开发经验的“小伙伴”自然最熟悉不过了,不过我相信对于大多数人来说也算是“最熟悉的陌生人”。从ResultSet取值操作大家都会,比如:private static List<Member> select(String sql) { List<Member> result = new ArrayList<>(); Conn.原创 2021-12-16 13:32:41 · 2069 阅读 · 0 评论 -
30个类手写Spring核心原理之AOP代码织入(5)
本文节选自《Spring 5核心原理》前面我们已经完成了Spring IoC、DI、MVC三大核心模块的功能,并保证了功能可用。接下来要完成Spring的另一个核心模块—AOP,这也是最难的部分。1 基础配置首先,在application.properties中增加如下自定义配置,作为Spring AOP的基础配置:#多切面配置可以在key前面加前缀#例如 aspect.logAspect.#切面表达式#pointCut=public .* com.tom.spring.demo.s.转载 2021-12-14 13:44:47 · 2140 阅读 · 4 评论 -
30个类手写Spring核心原理之MVC映射功能(4)
本文节选自《Spring 5核心原理》接下来我们来完成MVC模块的功能,应该不需要再做说明。Spring MVC的入口就是从DispatcherServlet开始的,而前面的章节中已完成了web.xml的基础配置。下面就从DispatcherServlet开始添砖加瓦。1 MVC顶层设计1.1 GPDispatcherServlet我们已经了解到Servlet的生命周期由init()到service()再到destory()组成,destory()方法我们不做实现。前面我们讲过,这是J2EE.原创 2021-12-13 14:55:15 · 1038 阅读 · 0 评论 -
花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘
本文所有内容均节选自《设计模式就该这样学》序言Design Patterns: Elements of Reusable Object-Oriented Software(以下简称《设计模式》),一书由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著(Addison-Wesley,1995)。这四位作者常被称为“四人组(Gang of Four)”,而这本书也就被称为“四人组(或 GoF)”书。他们首次给我们总结出一套软件开发可以反复.转载 2021-12-12 21:00:35 · 611 阅读 · 0 评论 -
30个类手写Spring核心原理之依赖注入功能(3)
本文节选自《Spring 5核心原理》在之前的源码分析中我们已经了解到,依赖注入(DI)的入口是getBean()方法,前面的IoC手写部分基本流程已通。先在GPApplicationContext中定义好IoC容器,然后将GPBeanWrapper对象保存到Map中。在GPApplicationContext中设计两个Map:factoryBeanObjectCache保存单例对象的缓存,factoryBeanInstanceCache保存GPBeanWrapper的缓存,变量命名也和原生Sprin.原创 2021-12-12 21:00:04 · 1398 阅读 · 0 评论 -
30个类手写Spring核心原理之Ioc顶层架构设计(2)
本文节选自《Spring 5核心原理》1 Annotation(自定义配置)模块Annotation的代码实现我们还是沿用Mini版本的,保持不变,复制过来便可。1.1 @GPService@GPService代码如下:package com.tom.spring.formework.annotation;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import ja.原创 2021-12-12 20:59:32 · 764 阅读 · 2 评论 -
30个类手写Spring核心原理之环境准备(1)
本文节选自《Spring 5核心原理》1 IDEA集成Lombok插件1.1 安装插件IntelliJ IDEA是一款非常优秀的集成开发工具,功能强大,而且插件众多。Lombok是开源的代码生成库,是一款非常实用的小工具,我们在编辑实体类时可以通过Lombok注解减少getter、setter等方法的编写,在更改实体类时只需要修改属性即可,减少了很多重复代码的编写工作。首先需要安装IntelliJ IDEA中的Lombok插件,打开IntelliJ IDEA后单击菜单栏中的File→Sett.原创 2021-12-12 20:58:57 · 989 阅读 · 0 评论 -
大厂高频面试题Spring Bean生命周期最详解
Spring作为当前Java最流行、最强大的轻量级框架。Spring Bean的生命周期也是面试高频题,了解Spring Bean周期也能更好地帮助我们解决日常开发中的问题。程序员应该都知道Spring的基础容器是ApplicationContext。应很多粉丝的强烈建议,本文我来分析分析 ApplicationContext中Bean的生命周期。ApplicationContext是顶层容器接口BeanFactory的实现类,因此,我们了解了ApplicationContext的生命周期逻辑,也基本上了解转载 2021-12-12 20:58:25 · 562 阅读 · 4 评论