Spring系列学习一、Spring框架的概论

Spring框架的概论

  • 一、 Spring框架的起源与历史
  • 二、 Spring框架的核心理念与特点
  • 三、 Spring与其他框架的对比
    • 1、首先介绍下Spring与其平替的EJB的对比:
    • 2、接下来介绍下Spring与基于Java EE原生技术的对比
    • 3、Spring与Hibernate的对比
    • 4、Spring与Struts的对比
  • 四、Spring框架的模块介绍

一、 Spring框架的起源与历史

最早,有个人名叫Rod Johnson,他设计了Spring框架,为何叫Spring呢?说是因为它像春天一样给人带来新的希望——我知道你会想,这也太浪漫了吧?不过我们不否认,Spring它确实带来了新的生机。

在2002年,Johnson写了一本名为《Expert One-on-One J2EE Development without EJB》的书籍,主旨是我们可以摆脱繁琐的EJB(有兴趣可以自己查资料)开发,选择更简洁、更易用的方式进行实现。这鲜明的观点引起了巨大的反响,Spring从此开始了它的旅程。可以毫不夸张的说,Spring的出现,就是为了颠覆基于EJB厚重的java开发框架的,开创了轻量级的企业应用开发框架,为JAVA语言这么多年长盛不衰做出了最大的贡献。 Spring官网地址 https://spring.io/
在这里插入图片描述

二、 Spring框架的核心理念与特点

你是不是想知道,为什么大家都爱Spring?让我掀开它的神秘面纱:

  • 便捷的开发:Spring的出现就是为了简化开发,它允许你只关注业务实现,其他琐碎的事情交给Spring。
  • 轻量级:Spring的体积相对较小,但又包含丰富的集成选项,让你几乎可以随心所欲地将自己的程序与各种系统打交道。
  • IoC容器:Spring提供了强大的IoC容器,它会按需为你管理Bean的生命周期,你唯一要做的就是选择如何用它。
  • AOP支持:Spring为我们提供了AOP(面向切面编程),这样你就可以在不改动业务代码的基础上,进行诸如日志记录、事务管理等操作。

三、 Spring与其他框架的对比

1、首先介绍下Spring与其平替的EJB的对比:

EJB (Enterprise JavaBeans)是Java EE规范的一个重要部分,为开发企业级分布式系统提供了一套丰富的服务。然而,随着Spring框架的出现,EJB并不再是唯一的企业级开发解决方案。Spring和EJB有积极的竞争关系,它们各有优缺点。

  • 易用性

Spring:Spring框架以简化开发为目标,它主要使用POJOs (Plain Old Java Objects) 进行开发,使得编码过程更灵活,可测试性更强。Spring提供了面向切面编程(AOP)和依赖注入(DI),使得开发者能更专注于业务逻辑而非系统级别的编程问题;

EJB:早期的EJB由于复杂的生命周期和复杂的配置,使用起来过于繁琐。但EJB 3.0及其之后的版本做了很多改进,像Spring一样支持注解和POJO。然而,EJB通常需要依赖特定的Java EE应用服务器,而Spring应用可以在任何的Servlet容器中运行。

  • 性能

Spring:Spring框架为应用提供了轻量级容器,对系统资源的消耗较小,同时,Spring的IoC(控制反转)和AOP特性使得代码运行高效,并且Spring本身提供了丰富的对缓存、数据库等的处理机制,使得性能优化更方便;

EJB:EJB通常运行在Java EE应用服务器中,如WebLogic,WebSphere等,这些服务器可能会提供事务管理、安全性、并发处理等多种服务,而这可能会导致额外的系统开销。但在需要复杂的分布式事务或并发处理的系统中,EJB可能会提供更优的性能。

  • 移植性

Spring:Spring是非侵入性的,意味着使用Spring框架开发的应用程序可以很方便地移植到其他技术和框架上,这大大增强了应用的移植性;

EJB:虽然EJB是Java EE规范的一部分,理论上可以在任何遵循Java EE规范的应用服务器中运行,但实际上,由于特定的启动类和运行环境,EJB在不同的应用服务器之间移植可能会遇到一些问题。

2、接下来介绍下Spring与基于Java EE原生技术的对比

  • Spring框架Java EE的一种轻量级解决方案

Java EE是一个完整的企业级应用开发平台,包括许多规范和API,如JPA、EJB、JSF和JMS等。在某种程度上,Spring框架可被视为Java EE的一种轻量级替代方案。

  • Spring相比Java EE轻量,灵活,门槛低

Spring的优点在于它的轻量级和灵活性。与Java EE相比,Spring的学习曲线更为平缓,Spring没有复杂的企业级特性,但通过使用DI、AOP等技术,Spring可以处理很多企业级应用的需求。此外,Spring框架的自适应性更强,可以轻松地与许多第三方库集成。

3、Spring与Hibernate的对比

Hibernate是一个开源的持久层框架,它在Java应用程序和数据库之间提供了ORM服务。Spring和Hibernate可以很好地集成在一起,Spring提供了一个称为Spring ORM的模块来支持Hibernate。

Spring的优势在于它的全面性,Spring不仅提供了持久层解决方案,而且还处理了许多其他的跨越应用层的问题,如安全性、事务管理、依赖注入等。此外,Spring的依赖注入可以简化复杂的Hibernate关联和事务管理。

4、Spring与Struts的对比

Struts是一个用于创建企业级Java Web应用程序的MVC框架。与Spring MVC相比,Struts2具有良好的分层架构和强大的标签库,但在开发效率和灵活性方面,Struts2不如Spring MVC,并且安全问题频发,使得struts2份额越来越低。

Spring为MVC开发提供了Spring MVC框架,优点在于它可以与Spring框架无缝集成,它支持灵活的URL映射和视图解析,并且Spring MVC的控制器编写起来更加简单,更符合POJO的编程范式。此外,Spring MVC的异常处理更加强大。

四、Spring框架的模块介绍

Spring框架拆分出了20多个独立的模块,看起来是不是有点头晕?其实只要你记住核心模块,其他的都可以在需要时查阅文档。
spring-core:核心工具,包含IoC与DI功能;
spring-beans:提供BeanFactory,是工厂模式的优雅实现;
spring-aop:支持AspectJ风格的面向切面编程;
spring-context:包含多个企业级服务,如邮件发送、JNDI定位、EJB集成等,还有许多与Spring核心模块的扩展;
spring-jdbc和spring-tx:简化了JDBC编程与事务管理;
spring-webmvc:提供了MVC设计模式的全功能实现,是开发Web应用的完美选择。

本节为Spring系统学习第一节,需要明白Spring的核心思想和其的独特优势就行。你也许会忽略Spring的来龙去脉,但是在此后的章节中,你将会发现这正是你对Spring的深度理解的开始。后续的章节将更深入地剖析Spring框架的内在机制,并通过实战示例的方式讲述Spring的应用和原理,让你从Spring小白成长为Spring大拿。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/297093.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据资源工具断点续传及下载重试功能

我们可以利用数据资源工具下载各类卫星及矢量数据,具体方法见:Sentinel-2 下载(其它数据操作方式类似),但在使用资源工具下载数据时可能会出现由于网络不稳定,网站关闭连接而造成下载的错误或中断。尤其是下…

2023安洵杯-秦岭防御军wp

reverse 感觉有点点简单## import base64 def ba64_decode(str1_1):mapp "4KBbSzwWClkZ2gsr1qAQu0FtxOm6/iVcJHPY9GNp7EaRoDf8UvIjnL5MydTX3eh"data_1 [0] * 4flag_1 [0] * 3for i in range(32, 127):for y in range(32, 127):for k in range(32, 127):flag_1[0]…

【Spring实战】02 配置多数据源

文章目录 1. 配置数据源信息2. 创建第一个数据源3. 创建第二个数据源4. 创建启动类及查询方法5. 启动服务6. 创建表及做数据7. 查询验证8. 详细代码总结 通过上一节的介绍,我们已经知道了如何使用 Spring 进行数据源的配置以及应用。在一些复杂的应用中,…

【眼镜】相关知识

眼镜相关 配眼镜可以事先了解的事情: 折射率:先说结论,高度数可以考虑选高折射率,低度数没必要。 折射率:1.50折射率 1.56折射率 1.60折射率 1.67折射率 1.71折射率 1.74折射率. 折射率越高,镜片越薄&a…

10:IIC通信

1:IIC通信 I2C总线(Inter IC BUS) 是由Philips公司开发的一种通用数据总线,应用广泛,下面是一些指标参数: 两根通信线:SCL(Serial Clock,串行时钟线)、SDA&a…

41 sysfs 文件系统

前言 在 linux 中常见的文件系统 有很多, 如下 基于磁盘的文件系统, ext2, ext3, ext4, xfs, btrfs, jfs, ntfs 内存文件系统, procfs, sysfs, tmpfs, squashfs, debugfs 闪存文件系统, ubifs, jffs2, yaffs 文件系统这一套体系在 linux 有一层 vfs 抽象, 用户程序不用…

用CSDN训练的InsCode AI创作博文:数据治理体系建设

想不想用AI帮我们写方案? 想尝试用CSDN提供的InsCode AI创作助手协助我们进行技术方案的创作,看看效果如何,能不能辅助我们日常的方案编写与创作?以前用ChatGPT也尝试过,但对于专业性更强的内容,还有表现的…

mmyolo导出模型

报错:python mmyolo/projects/easydeploy/tools/export_onnx.py configs/yolov7/tfj_yolov7_tiny_syncbn_fast_8x16b-300e_coco.py work_dirs/tfj_yolov7_tiny_syncbn_fast_8x16b-300e_coco/best_coco_bbox_mAP_epoch_10.pth --model-only --simplify 运行报错 No m…

Nginx优化(重点)与防盗链(新版)

Nginx优化(重点)与防盗链 Nginx优化(重点)与防盗链一、隐藏Nginx版本号1、修改配置文件2、修改源代码 二、修改Nginx用户与组1、编译安装时指定用户与组2、修改配置文件指定用户与组 三、配置Nginx网页的缓存时间四、实现Nginx的日志切割1、data的用法2、编写脚本进行日志切割的…

在linux操作系统Centos上安装服务器相关软件

如果您的服务器没有图形界面(GUI),您可以通过命令行(终端)来安装和配置Tomcat、JDK和MySQL等软件。以下是在没有图形界面GHome的 Linux 系统上安装这些软件的基本步骤: 对于CentOS Stream 9,您可以按照以下步骤在命令行上安装Tomcat、JDK 和 MySQL 数据库: 1. 安装JD…

AI项目十九:YOLOV8实现目标追踪

若该文为原创文章,转载请注明原文出处。 主要是学习一下实现目标追踪的原理,并测试一下效果。 目的是通过YOLOV8实现人员检测,并实现人员追踪,没个人员给分配一个ID,实现追踪的效果。 也可以统计人数。在小区办公楼…

Linux环境下MySQL安装

MySQL是一个关系型数据库管理系统,有瑞典MySQL AB公司于1995年开发,现属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS应用软件之一,因为它具有快速、轻量级和易用的特…