Spring框架是什么Spring框架的体系结构

news2024/11/20 0:26:54

 

Spring框架是什么

 

Spring是为企业Java最流行的应用程序开发框架。数以百万计的世界各地的开发人员使用Spring框架来创建高性能,易于测试的,可重用的代码。

Spring框架是一个开源的Java平台,它最初是由Rod Johnson编写并在2003年6月在Apache2.0许可下首次发布。

Spring是轻量级的,当涉及到大小和透明度。 spring框架的基本版本是大约2MB。

Spring框架的核心功能可以在任何Java应用程序中使用,但也有扩展的Java EE平台上构建Web应用程序。 Spring框架的目标,以使J2EE开发更容易使用,并且通过使基于POJO的编程模型,促进良好的编程习惯。

 

使用Spring框架的好处:

以下是一些使用Spring框架的极大的好处列表:

  • Spring 使开发人员使用POJO来开发企业级应用程序。仅使用POJO的好处是不需要EJB容器产品,如应用服务器,但必须只使用一个强大的servlet容器,如Tomcat 或某些商业产品的选择。

  • Spring 被组织在一个模块化的方式。虽然包和类的数量是巨大的,你只有担心那些需要的,而其它的就忽略了。

  • Spring不重新发明轮子,而是真正利用了一些像一些ORM框架,日志框架,JEE,Quartz和JDK定时器,其他视图技术的现有技术。

  • 编写测试Spring的应用程序很简单,因为环境相关的代码被移动到这个框架中。此外,通过使用JavaBean风格的POJO,它变得更容易使用依赖注入注入测试数据。

  • Spring web框架是一个设计良好的Web MVC框架,它提供了一个很好的替代Web框架,如Struts或其他过度设计或不太流行的Web框架。

  • Spring提供了一个方便的API平移技术特定的异常(通过JDBC,Hibernate,或者JDO抛出,例如)成一致,未经检查的异常。

  • 轻量级的IoC容器往往是轻量级的,尤其是相对EJB容器,例如。这有利于开发和有限的内存和CPU资源的计算机上部署应用程序。

  • Spring提供了一致的事务管理接口,可向下扩展到(使用一个单一的数据库,例如)本地事务并扩展到全局事务(使用JTA,例如)。

 

依赖注入(DI):

Spring最有确定的技术是依赖注入控制反转(DI)。控制反转(IoC)是一个笼统的概念,它可以表现在许多不同的方式和依赖注入仅仅是控制反转的一个具体的例子。

当编写一个复杂的Java应用程序,应用程序类应该尽可能独立其他Java类来增加重复使用这些类,并独立于其他类别的测试它们,而这样做单元测试的可能性。依赖注入有助于粘合这些类在一起,同时保持他们的独立。

什么是依赖注入是什么呢?让我们来看看这两个词分开。这里的依赖性部分转化为两个类之间的关联。例如,A类是依赖B类,现在,让我们来看看第二部分,注入。这一切都意味着,B类将由IOC注入到A类得到。

依赖注入可以将参数传递给构造函数的方式或使用后建设setter方法​​发生。依赖注入是Spring框架的核心,所以会在一个单独的章节,一个不错的例子解释这个概念。

 

面向切面编程(AOP):

Spring的一个关键组件是面向切面编程(AOP)框架。跨越多个点的应用程序的功能被称为横切关注点和这些横切关注点是从应用程序的业务逻辑概念上区分开来。有方面的各种常见很好的例子包括日志记录,声明性事务,安全性和高速缓存等。

模块化的OOP关键单元是类,而在AOP中模块化的单元则是切面。DI帮助您从彼此分离的应用程序对象,AOP可以帮助你消除来自他们影响的对象横切关注点。

Spring框架AOP模块提供了面向方面编程实现,允许您定义方法拦截器和切入点,以干净脱钩,实现的功能,应该分开代码。我将在单独的一章讨论Spring AOP的概念。

 

Spring框架的体系结构

 

Spring有可能成为所有企业应用程序的一站式服务,然而,Spring是模块化的,使您可以挑选哪些模块是适用的,而不必把在余下的也引入。以下部分给出详细介绍在Spring框架中所有可用的模块。

Spring框架提供约20个模块,可以根据应用程序的要求来使用。

 

60dca92c0f394922b7a5b1139c4a7c59.png

 

核心容器:

核心容器组成的核心,Beans,上下文和表达式语言模块,其细节如下:

  • 核心模块提供了框架的基本组成部分,包括IoC和依赖注入功能。

  • Bean模块提供BeanFactory是工厂模式的经典实现。

  • Context 上下文模块建立在由核心和Bean类模块提供了坚实的基础,它是访问定义和配置的任何对象的媒介。在ApplicationContext接口是上下文模块的焦点。.

  • 表达式语言模块提供了在运行时查询和操作对象图的强大的表达式语言。

 

数据访问/集成:

数据访问/集成层包括JDBC,ORM,OXM,JMS和事务处理模块,其细节如下:

  • JDBC模块提供了不再需要冗长的JDBC编码相关了JDBC的抽象层。

  • ORM模块提供的集成层。流行的对象关系映射API,包括JPA,JDO,Hibernate和iBatis。

  • OXM模块提供了一个支持对象/ XML映射实现对JAXB,Castor,使用XMLBeans,JiBX和XStream 的抽象层。

  • Java消息服务JMS模块包含的功能为生产和消费的信息。

  • 事务模块支持编程和声明式事务管理实现特殊接口类,并为所有的POJO。

 

Web:

在Web层包括网络,Web-Servlet,Web-Struts和网络的Portlet 组件,其细节如下:

  • Web模块提供了基本的Web开发的集成特性,例如多方文件上传功能和使用的servlet监听器的IoC容器初始化和针对Web的应用程序上下文。

  • Web-Servlet 模块包含Spring的模型 - 视图 - 控制器(MVC)实现Web应用程序。

  • Web-Struts 模块包含支持类内的Spring应用程序集成了经典的Struts Web层。

  • Web-Portlet 模块提供了MVC实现在portlet环境中使用和镜子Web的Servlet的模块的功能。

 

其他:

还有像AOP,切面,规范,网络和测试模块,其详细情况如下其他一些重要的模块:

  • AOP模块提供了面向方面编程实现,允许您定义方法拦截器和切入点,以干净解耦,实现的功能,应该分开的代码。

  • Aspects 模块提供与AspectJ的集成这又是一个功能强大且成熟的面向方面编程(AOP)框架。

  • Instrumentation 模块提供了一定的应用服务器中使用类工具的支持和类加载器实现。

  • 测试模块支持Spring 组件使用 JUnit 或 TestNG 框架的测试。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Logo设计教程:从入门到精通的全程指导

如果你想制作一个专业的Logo标识,但是又缺乏设计技能,那么乔拓云可以帮助你轻松完成这个任务。以下是通过乔拓云制作Logo标识的简单步骤: 1. 注册并登录乔拓云账号 访问乔拓云官网,注册并登录你的账号。登录后,你将进…

麒麟系统加密/麒麟系统防泄密

​深信达网络科技有限公司自主研发的深信达主机加固系统软件V2.0、深信达沙盒防泄密系统软件V5.0,与麒麟软件完成兼容认证,并被纳入麒麟软件安全生态联盟成员之一。 麒麟软件主要面向通用和专用领域打造安全创新操作系统产品和相应解决方案,以…

Linux 中如何安全地抹去磁盘数据?

哈喽大家好,我是咸鱼 离过职的小伙伴都知道,离职的时候需要上交公司电脑,但是电脑里面有许多我们的个人信息(聊天记录、浏览记录等等) 所以我们就需要先把这些信息都删除,确保无法恢复之后才上交 即有些…

Etsy店铺爆单的7个技巧

2023年跨境电商行业趋势愈发旺盛,目前正处于红利期,而作为近年来的电商网红“Etsy”,以其低成本低竞争高回报的优势吸引了大批的跨境电商玩家。但仅仅入驻照搬其他平台经验很难出单,如果你正烦恼这个问题,那么接下来的…

人工智能在教育上的应用2-基于大模型的未来数学教育的情况与实际应用

大家好,我是微学AI ,今天给大家介绍一下人工智能在教育上的应用2-基于大模型的未来数学教育的情况与实际应用,随着人工智能(AI)和深度学习技术的发展,大模型已经开始渗透到各个领域,包括数学教育。本文将详细介绍基于大模型在数学…

User Account Status 在CDB 和PDB不一致的情况 OPEN IN ROLLOVER

PDB: OPEN & IN ROLLOVER CDB: OPEN 解决办法 alter user C## expire password rollover period; select pdb.NAME, pdb.CREATION_TIME pdbcreated,du.username,du.account_status,du.LOCK_DATE,du.EXPIRY_DATE,du.CREATED,du.LAST_LOGIN,du.pro…

第十二章-系统调用

Ⅰ.Linux系统调用原理 Linux系统调用都通过中断号int 0x80完成,不同的系统调用函数对应eax中不同的子功能号,因此系统调用包括int 0x80; mov %sub_num,%%eax两个部分。 Linux系统调用包括两种方式:1.宏调用_syscall。2.库函数调用syscall。…

拼多多怎么引流商家?建议收藏的几个方法,拼多多引流脚本详细使用教学分享

大家好我是你们的小编一辞脚本,今天给大家分享新的知识,很开心可以在CSDN平台分享知识给大家,很多伙伴看不到代码我先录制一下视频 在给大家做代码,几个关于商家引流的知识今天给大家分享一下拼多多引流脚本的知识和视频演示 不懂的小伙伴可…

【微服务治理】Spring Cloud 断路器Hystrix实战应用

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

es elasticsearch 基础

es https://www.elastic.co/guide/en/elasticsearch/reference/6.8/getting-started.html 倒排索引: 正排–>从目录到文章内容 倒排–>内容到目录文章标题 if we dont need full text search ,we dont need to create 倒排 using text type 分词&#xff1a…

优雅而高效的JavaScript——解构赋值

🙃博主:小猫娃来啦 🙃文章核心:优雅而高效的JavaScript——解构赋值 文章目录 什么是解构赋值数组解构赋值基本用法默认值剩余参数 对象解构赋值基本用法默认值剩余参数 解构赋值的优势和应用场景代码简化和可读性提高交换变量值函…

硬件基本功--过流、过压保护电路

1.简介 过流保护(OCP):当电路电流超过预定最大值时,使保护装置动作的一种保护方式。不允许超过预定最大值电流,不然会烧坏电路的器件。过压保护(OVP):被保护电路电压超过预定的最大值时,使电源断开或使受控设备电压降低…

企业如何实现财务无纸化?票档一体化建设势在必行

随着“大智移云物区”等信息技术的发展,传统的财务管理开始向信息化、数字化转型,电子发票、电子凭证也逐渐取代传统的纸质档案资料,促使企业转型升级并逐步实现财务无纸化,助力降本增效。 同时,在政策强力推动下&…

【赠书活动】如何提高C++代码的性能

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

C++QT-day5

#include <iostream> //多继承using namespace std;class Sofa { private:string sitting; public:Sofa(){cout << "Sofa无参构造函数" << endl;}Sofa(string sitting):sitting(sitting){cout << "Sofa有参构造函数" << …

数据可视化——ucharts的使用

目录 1.引入 uCharts插件 2.使用组件 3.修改默认渲染数据的内容 1.修改柱状图上面渲染的内容 2.修改点击展示的内容 1.修改展示内容 2.自定义展示内容 4.修改其他设置查看官方文档 官网地址&#xff1a;uCharts官网 - 秋云uCharts跨平台图表库 uCharts是一款基于canvas API…

线性数据结构集会

目录 序言 一、数组 数组的优点 数组的缺点 数组的适用场景 二、链表 链表的优点 链表的缺点 链表的使用场景 链表的种类 Java单向链表的实现 三、队列 队列的特点 四、栈 栈的特点 栈的适用场景 五、时间复杂度简述 序言 线性数据结构是一种将数据元素以线性…

C语言,洛谷题:你的飞碟在这

文中要把字母A对应到1&#xff0c;Z对应到26&#xff0c;这时候就要用上ASCII表了。A对应的ASCII码值是65&#xff0c;要让A对应1&#xff0c;只要将A减去64&#xff0c;后面的字母也是一样的只要减去64&#xff0c;就能对应其26字母中的顺序。 要存储字符串对应的每个元素的数…

计算机毕业设计选什么题目好?springboot 学生考勤管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

Java实验一 Java语言基础(12题)

文章目录&#xff1a; 1、我国历法中的天干、地支和生肖的排列是有规律的。天干的顺序是“甲乙丙丁戊己庚辛壬癸”&#xff0c;地支的顺序是“子丑寅卯辰巳午未申酉戌亥”&#xff0c;生肖的顺序是“鼠牛虎兔龙蛇马羊猴鸡狗猪”。天干、地支、生肖的计算方法非常简单&#xff…