本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
有多少人是梦碎在Spring?别怕业余草Spring脑图教你一网打尽所有Spring面试题
有多少人是梦碎在 Spring?别怕业余草 Spring 脑图重磅来袭!
说实话,书到用时方恨少。Spring 只有你在面试的过程中,被打击彻头彻尾你才会重新重视它。
今天,我前面几天预热的 Spring 脑图全面来袭。需要的,加我微信:xmtxtt,免费送!
说实话,很多人看 Spring 的源码,看完之后,我问他,Spring 中读取 xml 配置文件有 3 种方式,为什么要设计 3 个类,一个类中 3 个方法不就好了吗?
嗯,为了扩展!哪我又问,Spring 在设计读取 xml 配置文件用到了什么设计模式?
以此类推,不超过 5 个问题就把他问趴下了。
现在,机会来了。跟着我的脑图,源码解读,原理,设计模式等一网打尽。再也不怕面试了,Offer 刷刷的来。
就拿上面这个图来说,加载一个 xml 配置文件,也就是我们常见的 3 种方式,但是为什么整出了这么多类来。为何要设计这么复杂?一个类,3 个方法不就行了吗?
光会用 Spring 还不行,一定要深入到它的源码中去思考它为什么要这样设计。
就拿上面的 ApplicationContext 接口来说,它是干什么用的?它能干什么?
从我的脑图和源码中就可以知道,ApplicationContext 接口继承了 EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver 等接口,这些接口让 ApplicationContext 具有如下功能:
- 提供访问应用组件的 bean 工厂方法,该功能继承自 ListableBeanFactory 接口。
- 提供通用的方式加载文件资源,该功能继承自 ResourceLoader 接口。
- 将事件发布给注册的监听器。该功能继承自 ApplicationEventPublisher 接口。
- 解决消息和支持国际化,该功能继承自 MessageSource 接口。
- 从父上下文继承。子上下文中的定义总是优先考虑。例如,整个 web 应用有一个父上下文,而每个 servlet 都有自己独立的子上下文。
除了标准 BeanFactory 的能力,ApplicationContext 还实现检测和调用 ApplicationContextAware、ResourceLoaderAware、ApplicationEventPublisherAware、MessageSourceAware。
ApplicationContext 接口继承了一大堆的接口,无比的复杂。用上了好几个设计模式。而它的子类,比如我们常见的 ClassPathXmlApplicationContext、FileSystemXmlApplicationContext、XmlWebApplicationContext 等又是一层一层的继承。
如果你不了解 Spring,不深入它的源码。你就会觉得,IOC,AOP 等不就是反射吗?不就是加载个配置文件吗?不就是依赖注入,控制反转吗?
让我写的话,不下 10 个类搞定所有功能。然而,你看看 Spring 中到底有多少个类。还细分了很多个 jar,只有你慢慢的品味,通读它的源码,深入思考猜会明白 Spring 原来设计的是如此的之妙。
好了,废话不多说。下面截图的只是这套脑图的十分之一都不到的内容。
现在如果你需要它,请加我微信:xmtxtt,免费送!如果你看不懂,请关注我的微信公众号,我后面抽时间来一一的解答!
最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!