「Java面试」如果不使用Spring,我们将如何开发?

简介: 曾经有一道面试题掀起了劲爆的浪潮,说如果不使用Spring,我们将如何开发?好多家公司都模仿提问了这么一道面试题,而且好多人也都在各个社区给出了自己的答案。接下来看看网友们是怎么说的。

曾经有一道面试题掀起了劲爆的浪潮,说如果不使用Spring,我们将如何开发?好多家公司都模仿提问了这么一道面试题,而且好多人也都在各个社区给出了自己的答案。接下来看看网友们是怎么说的。


有说手写IoC的,有说用Servlet完成Web开发的,有说用纯JDBC完成数据库操作的等等,大家回答各有千秋。其实,想想我们上一代的程序员,没有Spring不也照样开发出非常多优秀的系统。


另外,我花了1个多星期,准备了一份500页的PDF面试题解析配套文档,想获取的小伙伴可以扫描文章底部二维码领取!

1、Spring生态

那我们使用Spring到底能给我们带来哪些好处呢?

根据我对Spring 10多年的研究经验,给大家做以下总结。

首先,Spring是一个轻量级的应用框架。当然,众所周知,它提供了 IoC 和 AOP 这两个核心的功能。

494dbcf860bfdde6b832f89a2288c86d.jpg

它的核心目的是为了简化企业级应用程序的开发,使得开发者只需要关心业务需求,不需要关心 Bean 的管理,以及通过切面增强功能减少代码的侵入性。

当然,Spring发展到现在俨然不只是一个框架,而是一个生态,我们习惯性地称之为Spring全家桶。Spring大约有20个模块,由1300多个不同的文件构成。这些模块可以分为核心容器、AOP和设备支持、数据访问与集成、Web组件、通信报文和集成测试、集成兼容等类。如图所示:

4aebedca82e324b2afbb58ee1ece2246.jpg

组成Spring框架的每个模块都可以单独存在,也可以将一个或多个模块联合实现。

2、使用Spring的好处

从 Spring 本身的特性来看,我认为有几个关键点是我们选择 Spring 框架的原因。

9573021c1bf5a6cf029e4056b742814f.jpg

第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的理解。任何一个技术框架的出现,一定为了实现某些业务场景或者是某一类技术问题的解决方案。当大家有了的开发经验之后,对一些技术框架,要有自己的见解和思考。我自己在面试的时候也喜欢问这一类的问题。


image.gif

相关文章
|
8月前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
7940 111
|
9月前
|
监控 Java 数据库
从零学 Dropwizard:手把手搭轻量 Java 微服务,告别 Spring 臃肿
Dropwizard 整合 Jetty、Jersey 等成熟组件,开箱即用,无需复杂配置。轻量高效,启动快,资源占用少,内置监控、健康检查与安全防护,搭配 Docker 部署便捷,是构建生产级 Java 微服务的极简利器。
939 117
|
8月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
9月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
9月前
|
人工智能 Java API
构建基于Java的AI智能体:使用LangChain4j与Spring AI实现RAG应用
当大模型需要处理私有、实时的数据时,检索增强生成(RAG)技术成为了核心解决方案。本文深入探讨如何在Java生态中构建具备RAG能力的AI智能体。我们将介绍新兴的Spring AI项目与成熟的LangChain4j框架,详细演示如何从零开始构建一个能够查询私有知识库的智能问答系统。内容涵盖文档加载与分块、向量数据库集成、语义检索以及与大模型的最终合成,并提供完整的代码实现,为Java开发者开启构建复杂AI智能体的大门。
5217 58
|
8月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
694 8
|
9月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
10月前
|
前端开发 Java 开发者
Java新手指南:在Spring MVC中使用查询字符串与参数
通过结合实际的需求和业务逻辑,开发者可以灵活地利用这些机制,为用户提供更丰富而高效的Web应用体验。
246 15
|
9月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
355 0