第二卷 第一章 伪IOC容器--羊墅
写在前面:
Spring自诞生起,就被人称作“万能胶”,核心服务就是解耦 ,随着Spring5的出现,已经形成一个生态,被人称作spring全家桶,而且逐步在去serlvet化,去tomcat化,大有独成一家之势。
相比于早期程序员自己new对象,IOC/DI大大解放了程序员双手,让开发者更加关注业务,而不需关系技术细节。而AOP采用面向切面编程思想,让开发者无须关心业务之外等适普性技术点:如日志管理,事务管理等。
话说参观Spring的人还真不少,又一次印证了迦娃的羊群理论。虽然这个超级基地已经运营的消息只有少数人知道,但是在这个网络已经犹如水、电一般普遍的世纪里。这样的超级基地肯定是藏不住的。
话不多少,让我们先用30个类了解下Spring的基本概况。
我们会通过5大模块来介绍Spring,依次顺序是IOC->DI->MVC->AOP->JDBC,依次展开,同时对应名5个小故事映射其核心思想。
分别是
1.伪IOC容器--羊墅
2.送货上门的羊肉
3.待定。。。
4.待定。。。
5.待定。。。
这里先上一张图,IOC的核心类图(源码中ApplicationContext为接口,此处简化为类,目的是理解其流程思想),看图:

具体代码见:github地址:https://github.com/Airxia/JLSpring 欢迎下载体验
话说这天,Spring派人去外部世界(内存外,此处先定为磁盘)寻找羊群(定位资源文件)。在找来羊群(配置文件)之后,首先带其进入内存世界(可以想象为一张巨大的结界网膜,经过之后就会被转成流态),而后对流态羊群中的每一只羊进行了一番扫描巡视(相当于扫描配置文件里配置的包路径下的所有类),再对它们进行清洗,然后挂上了Spring自己的牌子,可以说是改头换面,脱胎换骨,由新羊变成了旧羊(相当于将Bean封装成BeanDefinition)。最后就送入了羊墅(伪IOC)进行高品质的优待,听钢琴,吃大餐。
预知后事如何,且听下回分解~~~
第二卷 第一章 伪IOC容器--羊墅的更多相关文章
- JAVA核心技术第二卷 第一章
流的家族:
- Spring入门篇——第2章 Spring IOC容器
第2章 Spring IOC容器 介绍Spring IOC容器的基本概念和应用 2-1 IOC及Bean容器 自己的理解:什么是IOC?就是利用配置文件(外部容器)来创建对象. 在IOC容器中,所有对 ...
- Java核心技术(Java白皮书)卷Ⅰ 第一章 Java程序设计概述
第1章 Java程序设计概述1.1 Java程序设计平台 具有令人赏心悦目的语法和易于理解的语言,与其他许多优秀语言一样,Java满足这些要求. 可移植性 垃圾收集 提供大型的库 如果想要有奇特的绘 ...
- JAVA入门第二季 第一章 类和对象
面向对象编程 Object Oriented Programming OOP 第一.什么是类和对象 在具体说明类和对象之前,先说说别的. 眼睛在人类身体上最为有用的器官.如果一个没有了眼睛,这个人与世 ...
- Java入门第二季第一章类和对象知识点
Java 中的 static 使用之静态方法 1. 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员.如: 如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问 ...
- python基础教程第二版 第一章
1.模块导入python以增强其功能的扩展:三种方式实现 (1). >>> Import math >>> math.floor(32.9) 32.0 #按照 模块 ...
- 算法竞赛入门经典第二版第一章习题-(练习Java和C++语法)
习题1-1 平均数(average) 输入三个整数,输出他们的平均值,保留三位小数 Java: package suanfa; import java.util.Scanner; public cla ...
- Spring核心技术(一)——IoC容器和Bean简介
IoC容器和Bean简介 这章包括了Spring框架对于IoC规则的实现.Ioc也同DI(依赖注入).而对象是通过构造函数,工厂方法,或者一些Set方法来定义对象之间的依赖的.容器在创建这些Bean对 ...
- 《Spring技术内幕》笔记-第二章 IoC容器的实现
简单介绍 1,在Spring中,SpringIoC提供了一个主要的JavaBean容器.通过IoC模式管理依赖关系.并通过依赖注入和AOP切面增强了为JavaBean这样子的POJO提供事务管理,生命 ...
随机推荐
- Linux学习—yum命令(转载)
yum简介 yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器. 基於RPM包管理,能够从指定的服务器自动 ...
- .Net Core 2.*+ InfluxDB+Grafana+App Metrics实时性能监控
前言 .net core 2.* 实施性能监控 这个工具其实给运维 大大们用起来是更爽的.但是Grafana现在还没有找到中文版. 本文需要了解的相关技术与内容: InfluxDb(分布式时序数据库, ...
- js-jsTree
依赖:jquery.jsjstree.js//cdnjs.cloudflare.com/ajax/libs/jstree/3.3.3/themes/default/style.min.css 备注:绑 ...
- 20190925 - macOS 的包管理工具
众所周知,macOS 的包管理工具有 MacPorts 和 Homebrew,后者似乎更受欢迎,但前者但包数量更多. 喜欢手冲咖啡,看到 brew 这个词有好感,但可能部分由于网络的问题,部分因为 b ...
- antd <BackTop>组件的使用
<Content className={style.content} style={{ maxHeight: 'calc(100vh - 175px)',overflowY:"auto ...
- linux学习命令收集
多看看大神的博客 https://blog.csdn.net/tao934798774/article/details/79491951 ip addr 查看ip地址 ifconfig 查看i ...
- 华为 huawei 查看系统中存在的安全风险信息 display security risk
查看系统中存在的安全风险信息. 应用场景 由于协议自身的安全性能不同,用户配置时使用的某些协议可能存在安全风险.通过该命令可查看系统中存在的安全风险,并根据给出的修复建议解除风险.例如,用户配置了SN ...
- PTA(Advanced Level)1083.List Grades
Given a list of N student records with name, ID and grade. You are supposed to sort the records with ...
- Linux、Aix(unix)、Oracle 银行外包开发运维常用命令
我一直是银行外包开发人员,常用的操作命令固然少不了,这是我一次自己边添加边使用的笔记.内容有点乱,希望可以帮到你. rm 文件或目录rm -f 文件或目录rm -rf * 跑路的时候用du -h 文件 ...
- Redis 是怎么实现 “附近的人” 的?
针对"附近的人"这一位置服务领域的应用场景,常见的可使用PG.MySQL和MongoDB等多种DB的空间索引进行实现. 而Redis另辟蹊径,结合其有序队列zset以及geohas ...