10年架构师告诉你,他眼中的Spring容器是什么样子的

相关文章

如何慢慢地快速成长起来?

成长的故事之Spring Core系列

你是如何看待Spring容器的,是这样子吗?
Spring的启动过程,你有认真思考过吗?(待写)
面向切面编程,你指的是Spring AOP吗?(待写)
Spring的声明式事务,这次你彻底明白了吧?(待写)

§如何提问,如何回答?

记得大学时,思想道德修养课的老师说过,现在的大学生都不太会表达自己的观点。她举了这么个例子,如果你在食堂,随机采访几个学生,就问:“你觉得食堂的饭菜怎么样啊?”

你得到最多的答案大概是像这样的,“不错,挺好吃的”;“不行,太难吃了”;“凑合,感觉还可以吧”。

原因有两方面,一是学生不知道该如何对一个事物发表自己的观点,也就是自我表达能力有点差。二是提问的问题本身存在问题,太宽泛了,学生不知道该怎么接。诸如此类的“你是如何看待XXX的?”这样的问题,感觉是最难回答的。

但我要说的是,如果你能把这类问题回答的很好,那你真的已经相当厉害了。

§从面试别人说起

说起来我也面试过几十个人了,不过说实话,我并没有一个很好的套路或方法去面试别人。我一般不会特别在意应聘者截至到现在拥有多少知识,或会多少技术。注意我说的是一般情况下不会。

原因有二,一来我们不是造航母,招的就是拧螺丝的。二来我更在意一个人对他已有知识,或已经会用的技术的看法。

因为一个问题的结果无非就是一些答案。但是一个看法的结果却是一些观点。一个人能够当众发表一些很有看法的观点,说明的他的业务/技术素质和心理素质都很不错。

所以对于应聘者,我都会问,你如何看待Spring?大都回答Spring是一个IoC容器,然后就没有了。其实我真正想知道的是你眼中的Spring是什么样子的。

然后我继续问,什么是IoC?大都答道控制反转或依赖注入。我再问,你如何理解控制反转呢?几乎没有人能很好的回答。

既然是一个IoC容器,那你怎么理解“容器”二字?几乎也没有人能回答的很好。

§C语言中的全局变量

计算机专业一般都会学C语言,倒不是为了做项目,只是作为入门语言。C语言是面向过程的,没有类、字段等这些概念,只有函数和变量。

刚开始接触程序和语言时,大都水平不高。用的最多的就是全局变量,而且觉得特别好用。

原因有二,一是只要在一个全局位置定义好,后面程序中的任何地方都能够访问到它二是因为全局可访问,所以不用去考虑或规划,如何定义变量,怎么在函数间传递或返回。关键作为初学者,不一定能够做好这“简单”的事情。

全局变量非常简单好用,和goto语句一样。但逐渐都不推荐再使用或被淘汰了,因为它们太灵活了,不太好控制,特别是后期代码量越来越多的时候。

如果发明一种东西,像全局变量一样简单好用(继承优点),但同时又能够很好地控制住(改进缺点),它能不火起来吗?很显然,Spring就具有这种特性(虽然现在的Spring已经足够复杂了)。

§Spring很好用,真的

BAT之所以牛逼,就是因为它们都在各自的领域,彻底改变了人们的方式。Spring也彻底改变了人们的编程方式。

类似的还有Struts/SpringMVC彻底改变了开发web应用的方式,Hibernate/Mybatis彻底改变了访问数据库相关代码的方式。

Spring的全局性
人类抬头,看到的是天。代码抬头,看到的是Spring。在任何地方,代码都可以和Spring交互。可以这么说,代码几乎是在Spring的管控下运行的(虽然这样讲不是很精确)。

Spring的解耦性
这里指的更多是开发方式上的解耦性。例如,从类A把B传给类C,原来的做法是直接传,这样A和C就耦合了,其实它们本没有关系。

现在只需在类A里把B放入Spring中就完事了。然后在类C里再从Spring中取出B就可以了。A和C就解耦了,因为Spring充当了中间人。

Spring的易用性
Spring就像你的秘书/管家,需要什么服务,告诉它,它给你提供。需要发号施令,告诉它,它帮你执行。

就把Spring想象成你头顶的容器,需要从里取东西,伸开胳膊拽下来的就行了。需要往里存东西,胳膊用力推上去就行了。整个过程你甚至都不用抬头。

PS:Spring仅仅是个容器吗?请持续关注后续文章!

经典文章推荐

小学生都能看懂的表达式计算(图解)

五分钟轻松了解Hbase列式存储

List家族遗产继承PK赛(一)

List家族遗产继承PK赛(二)

Map家族前来踢馆(一)

Map家族前来踢馆(二)

(完)

编程新说



用独特的视角说技术

原文地址:https://www.cnblogs.com/lixinjie/p/how-do-you-think-spring-is-a-container.html

时间: 2024-11-07 19:40:43

10年架构师告诉你,他眼中的Spring容器是什么样子的的相关文章

阿里架构师告诉你最新Java架构师学习路线图

1.Java架构师是什么?要想往Java架构师的方向发展首先要知道Java架构师是什么?Java架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物.一个Java架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单.Java架构师在软件开发的整个过程中起着很重要的作用.说的详细一些,架构师就是确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节.扫清主要难点的技术人员.主要着眼于系统的"技术实现

8年iOS架构师告诉你,为什么iOS现在不行了!

前言: 在近一段时间里,笔者会经常听到在职iOS开发人员的各种吐槽,各种无奈,各种对于iOS市场唱衰,更是在某度搜索引擎上随便一点iOS就是各种负面新闻,事实上,经过笔者的一番了解,断定其实你们看到的一定是个假iOS! 如果你的工作只是为了赚钱, 不管换什么工作,只要过个一两年到了瓶颈期,你都会有类似的感觉,请不要随意怀疑一个行业的高峰或者低潮期,请正视自己,正视一个行业. 做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个我的iOS交流群:638302184,不管你是小白还是大牛欢

阿里P8架构师告诉你什么是分布式架构

一.前言 我们都知道,当今无论在BAT这样的大公司,还是各种各样的小公司,甚至是传统行业刚转互联网的企业都开始使用分布式架构,那么什么叫分布式架构呢?分布式架构有什么好处呢?分布式架构经过了怎样的发展呢?是哪家企业开启了分布式架构的时代呢?读完本文,你就会得到这些答案,下面让我们一起来开启分布式概述的奇妙之旅吧! 二.分布式架构的发展历史 1946年2.14日,那是一个浪漫的情人节 , 世界上第一台电子数字计算机在美国宾夕法尼亚大学诞生了,她的名字叫ENIAC.这台计算机占地170平米.重达 3

阿里P7架构师告诉你Java架构师必须知道的 6 大设计原则

在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义.本文主要将总结这些常见的原则,和具体阐述意义. 开发原则 面向对象的基本原则(solid)是五个,但是在经常被提到的除了这五个之外还有 迪米特法则和合成复用原则等, 所以在常见的文章中有表示写六大或七大原则的: 除此之外我还将给出一些其它相关书籍和互联网上出现的原则: S单一职责SRP Single-Responsibility Principle, 一个类,最好只做一件事

鹅厂6年在职架构师告诉你如何成为iOS大牛开发者【进阶篇】

序言: 如果从 13 年移动客户端大火开始算起,至今已经有五个年头了.现在移动端的形势也不需要太多的废话来描述,一句话总结就是:"浪潮退去,谁在裸泳一看就清楚."我希望借助这篇文章来聊聊在我心目中,移动互联网下一个五年的趋势和机会,以及我们 iOS 工程师能做哪些准备,实现自我提高.本文主观性的看法比较多,文笔也比较激进,仅供参考. 我们都知道价格会受到供需的影响,如果某项技能在市场上紧缺,那么掌握这门技能的工作者工资就会相对高一些,比如 14 年前前后能写好 UITableView

剑指架构师系列-InnoDB存储引擎、Spring事务与缓存

事务与锁是不同的.事务具有ACID属性: 原子性:持久性:由redo log重做日志来保证事务的原子性和持久性,一致性:undo log用来保证事务的一致性隔离性:一个事务在操作过程中看到了其他事务的结果,如幻读.锁是用于解决隔离性的一种机制.事务的隔离级别通过锁的机制来实现. 数据库的事务隔离级别有(多个事务并发的情况下): 1.read uncommitted #首先,修改隔离级别 set tx_isolation='READ-UNCOMMITTED'; select @@tx_isolat

京东后端Java高级架构师面经+面试题:Spring+多线程+NIO+MySQL

之前面了腾讯的提前批,不过没走流程.同期还面了阿里的两轮面试,被告知不走流程就不能面了,所以也没面完. 后来走了京东这边的流程.前几天刚刚面完HR. 正好今天分享一下面经,大家可以多交流交流哈. 京东面经 第一轮:电话初面 第二轮:技术面谈 第三轮:高管复试 第四轮:HR最后确认 第一轮电话初面: 首先确认对京东的意向度(如果异地更会考虑对工作地点(北京)的意向度!京东很看重这个):其次面试官一般会针对您所做过的项目来做具体技术的交流,会比较关注个人对项目细节是不是掌握到位,主要考察Java的技

资深首席架构师眼中的架构应该是怎样的?

“架构的视角每个人都不一样,这位在eBay.携程.唯品会等平台型互联网公司都工作过的老司机就以平台架构视角和大家分享架构心得体会.一家之言,欢迎讨论. 本文首发于InfoQ垂直公众号「聊聊架构」,ID:archtime. 我对架构定义的理解 大概在7~8年前,我曾经有一个美国对口的架构师导师,他对我讲架构其实是发现利益相关者(stakeholder),然后解决他们的关注点(concerns),后来我读到一本书<软件系统架构:使用视点和视角与利益相关者合作>,里面提到的理念也是这样说:系统架构的

一位10年Java工作经验的架构师聊Java和工作经验

从事近十年的 JavaEE 应用开发工作,现任阿里巴巴公司系统架构师.对分布式服务架构与大数据技术有深入研究,具有丰富的 B/S 架构开发经验与项目实战经验,擅长敏捷开发模式.国内开源软件推动者之一,Smart Framework 开源框架创始人.热爱技术交流,乐于分享自己的工作经验.著有<架构探险——从零开始写Java Web框架>一书. 我的十年技术之路 和大家介绍下我目前所从事的工作. 我目前从事分布式服务架构的设计与开发工作,在阿里的大数据平台上进行应用程序开发.我们整个系统架构采用了