曾经有一道面试题掀起了劲爆的浪潮,说如果不使用Spring,我们将如何开发?好多家公司都模仿提问了这么一道面试题,而且好多人也都在各个社区给出了自己的答案。接下来看看网友们是怎么说的。
有说手写IoC的,有说用Servlet完成Web开发的,有说用纯JDBC完成数据库操作的等等,大家回答各有千秋。其实,想想我们上一代的程序员,没有Spring不也照样开发出非常多优秀的系统。
另外,我花了1个多星期,准备了一份500页的PDF面试题解析配套文档,想获取的小伙伴可以扫描文章底部二维码领取!
1、Spring生态
那我们使用Spring到底能给我们带来哪些好处呢?
根据我对Spring 10多年的研究经验,给大家做以下总结。
首先,Spring是一个轻量级的应用框架。当然,众所周知,它提供了 IoC 和 AOP 这两个核心的功能。
它的核心目的是为了简化企业级应用程序的开发,使得开发者只需要关心业务需求,不需要关心 Bean 的管理,以及通过切面增强功能减少代码的侵入性。
当然,Spring发展到现在俨然不只是一个框架,而是一个生态,我们习惯性地称之为Spring全家桶。Spring大约有20个模块,由1300多个不同的文件构成。这些模块可以分为核心容器、AOP和设备支持、数据访问与集成、Web组件、通信报文和集成测试、集成兼容等类。如图所示:
组成Spring框架的每个模块都可以单独存在,也可以将一个或多个模块联合实现。
2、使用Spring的好处
从 Spring 本身的特性来看,我认为有几个关键点是我们选择 Spring 框架的原因。
第1个,轻量:Spring 是轻量的,最核心的基本的版本文件大小大约为 2MB。
第2个,支持IoC/DI:当然,IoC不是Spring独有的。但最重要的是,可以使用Spring 的 IoC 容器实现对 Bean 的全生命周期的管理,还可以通过 DI 实现依赖注入,从而实现了对象依赖的松耦合管理。
第3个,支持AOP面向切面的编程:Spring 支持面向切面的编程,从而把应用业务逻辑和系统服务分开。
第4个,支持MVC:Spring MVC 提供了功能更加强大且更加灵活的 Web 框架支持
第5个,支持数据访问:Spring集成对主流ORM框架的支持,比如JPA、MyBatis等等。
第6个,声明式事务管理:Spring 通过 AOP 实现了事务的统一管理,对应用开发中的事务处理提供了非常灵活的支持
第7个,集成测试:Spring为测试提供支持,在开发环境即可生成测试
最后,Spring生态非常庞大。使用Spring几乎可以满足所有业务场景的开发。更重要的是社区的活跃度和技术的成熟度都非常高。
以上就是我对Spring的理解。任何一个技术框架的出现,一定为了实现某些业务场景或者是某一类技术问题的解决方案。当大家有了的开发经验之后,对一些技术框架,要有自己的见解和思考。我自己在面试的时候也喜欢问这一类的问题。