简要介绍Spring原生框架与Spring是轻量级框架的原因

news2024/11/20 12:40:15

😉😉 学习交流群:

✅✅1:这是孙哥suns给大家的福利!

✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别视频资料

🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取!

🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

💞💞5:以上内容,进群免费领取呦~ 💞💞💞💞

Spring第一篇简介目录

一:Spring简介

二:EJB框架缺陷

1:运行环境苛刻

2:  代码移植性差

三:  什么是Spring

1:Spring是企业开发全套解决方案

2:Spring为什么是轻量级

四:核心设计模式

1:什么是设计模式

2:工厂模式

3:Spring的工厂设计模式


一:Spring简介

        SpringIOC工厂是Spring所有特性的基础,Spring所有的特性都是基于IOC控制反转特性而来的。当今微服务已经成为主流,微服务依赖于SpringBoot和SpringCloud,而SpringBoot和SpringCloud是衍生于Spring,所以,学习Spring很重要。(Spring学习到位之后才能理解到位SpringBoot和SpringCloud)Spring全称Spring Framework,2002年写出来的东西,轻量级企业开发开发解决方案,是为了解决EJB的缺陷。

二:EJB框架缺陷

1:运行环境苛刻

        当前我们开发的程序是属于JavaWeb程序,这样的程序运行的时候需要一个服务器环境,当前我们常用的服务器是Tomcat服务器,我们写好的Java代码都运行在Tomcat上,Tomcat帮我们集中处理请求响应,包括完成Servlet和相关代码的运行和解析。

        在Tomcat当中最为核心的组件是一个Servlet引擎的这样一个组件,Tomcat当中所有的核心的工作都是交给一个叫做Servlet引擎的组件来做,这样Tomcat就能实现让我们的代码实现一下web请求的工作,Tomcat我们成为也就是web服务器。

        EJB代码对于环境要求很苛刻,他的代码不能运行在Tomcat服务器当中,而是需要运行在EJB容器当中,Tomcat是不具备这个东西的,所以EJB需要运行在更复杂的服务器上,比方说weblogic服务器上,这个服务器上不仅包含servlet引擎,还包括EJB容器,所以这样的服务器也叫做ApplicationServer这个是非开源的是收费的。很多中小型公司没有钱的话用不了这两种收费的服务器,也就书写不了EJB的代码,而且因为是非开源的,无法进行定制。

2:  代码移植性差

        EJB的代码运行在weblogic这个服务器当中需要实现webLogic服务器当中一些特殊的接口,才可以进行运行,当这样的代码想往WebSphere中进行迁移时,就这个服务器当中并没有提供这样接口,就无法进行移植

        总结:EJB是一个重量级的框架,运行环境苛刻,代码移植性差

三:  什么是Spring

Spring是一个轻量级的Java2EE解决方案,聚合众多优秀的设计模式
轻量级:对于运行环境没有额外要求的
常用服务器:
        开源的:Tomcat,Resion,Jetty
        收费的:WebLogic,WebSphere

1:Spring是企业开发全套解决方案

        我们之前的开发是分层的,Controller层,Service层解决业务,Dao层访问数据库,而当今众多优秀的框架中Struct2、Mybatis都是解决的某一层的问题。而Spring是一个解决方案,可以解决JavaEE开发当中所有层的问题,可以通过SpringMVC解决控制层的问题,可以通过SpringAop解决Service层事务的控制和日志处理的问题,还可以通过将Hibernate,Mybatis进行整合解决Dao层的问题。

        经过分析,整个Spring来讲每一层都有对应的解决方案。所以他是一个完整的整个体系的解决方案。

2:Spring为什么是轻量级

        Spring并不是发明了什么新技术,而是对众多优秀的设计模式的进行了高度的封装和整合,所有的特点都是基于一些列设计模式的整合来实现的

四:核心设计模式

        Spring当中应用了很有优秀的设计模式,而正是这些优秀的设计模式助力了Spring的轻量级!

1:什么是设计模式

        设计模式是面向对象设计过程中解决特定问题的经典代码,Java中一共 23种设计模式。

2:工厂模式

        工厂模式大致可以分为简单工厂模式和通用工厂模式 ,他们的大概思路都是反射+配置。通过反射我们可根据类的全限定类名获取到子类的运行时对象也就是他的Class对象,通过这个Class对象我们就可以创建这个类的实例。

        一个实现思路就是通过将类的全限定类名可以写入到properties配置文件当中,在这个配置文件当中,我们基于对配置的解析,将配置文件通过流的方式读取到property集合对象当中,然后将全限定类名匹配到反射当中完成对象的创建。

        小的配置文件,我们一般使用properties,properties类型的文件介绍,在maven项目当中,main->Java下面完成的是代码,main->resources下边专门放置配置文件,Properties配置文件语法有一个特殊的要求,必须采用key_value的形式进行组成,Key随便写,唯一就行,Properties集合可以用于存储properties文件的内容,是一种特殊map形式,可以通过getProperty属性进行获取Properties集合创建之后可以通过io流的方式将properties文件中的对象转换成集合,io流在我们整个Java操作过程当中是系统级资源,我们一般避免重复打开io,并且最好在程序启动的时候一次性读取完毕我们所有的内容。所以,我们采用静态代码快的方式来完成,流用完了,我们要关闭一下。

        在反射工厂中采用一个反射机制+配置文件的方式可以彻底解决类的耦合的问题。这样替换的时候,不需要修改任何一行代码,直接增加一个类,实现对应的接口,然后修改配置文件中的内容既可以了,重启一下服务器就可以了。

        在Service层当中也有耦合的情况,对于dao层对象的耦合,在工厂类当中,工厂设计的核心就是工厂类。在这个反射工厂当中要对一个对象进行解耦合,就需要在反射工厂类中添加一个对应的方法,通过一种反射+配置文件(流读取成集合)的方式进行解耦,有大量的冗余的代码。这样造成的工厂类中的方法是无穷无尽的。

3:Spring的工厂设计模式

        对于Spring来讲,最为核心的就是Spring的工厂设计模式,作为Spring的框架来讲,Spring当中的工厂模式已经创建好了,Spring当中的工厂类是ApplicationContext类,对应的配置文件是ApplicationContext.xml。Spring的配置文件用的是xml,实现思路和我们工厂是一样的,只不过spring的工厂模式更为强大

😉😉 学习交流群:

✅✅1:这是孙哥suns给大家的福利!

✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别视频资料

🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取!

🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

💞💞5:以上内容,进群免费领取呦~ 💞💞💞💞

 

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

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

相关文章

C++ 泛型编程,函数模版和类模版

1.泛型编程 泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础 就比如说活字印刷术,就是提供一个模具,然后根据模具来印刷出不同的字。 泛型编程跟着类似,提供一个模版,根据这…

Node.js入门指南(完结)

目录 接口 介绍 RESTful json-server 接口测试工具 会话控制 介绍 cookie session token 上一篇文章我们介绍了MongoDB,这一篇文章是Node.js入门指南的最后一篇啦!主要介绍接口以及会话控制。 接口 介绍 接口是前后端通信的桥梁 &#xff0…

【栈和队列(1)(逆波兰表达式)】

文章目录 前言什么是栈(Stack)栈方法栈的模拟实现链表也可以实现栈逆波兰表达式逆波兰表达式在栈中怎么使用 前言 什么是栈(Stack) 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0…

MySQL数据库【一】

博学而笃志,切问而近思 文章目录 数据库简介服务器、数据库以及表的关系连接数据库数据库操作命令创建数据库查看数据库创建语句查看数据库使用数据库修改数据库删除数据库 数据库字符集和校验规则查看系统默认字符集查看系统默认校验规则查看数据库支持的字符集查看…

文本编辑 换行符CRLF/CR/LF问题

参考资料 Linux—CRLF/CR/LF等回车换行符问题详解改行コードCRはなぜ(^M)で\rなのかテキストファイルの行末に^Mが表示されるLinux 替换^M字符 方法 目录 一. 遇到的问题二. 换行符释义三. 换行符查看四. 去除 ^M4.1 通过文本编辑器转换换行符4.2 在lin…

Html网页threejs显示obj,ply三维图像实例

程序示例精选 Html网页threejs显示obj,ply三维图像实例 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《Html网页threejs显示obj,ply三维图像实例》编写代码,代码整洁&#xff0…

【JavaScript框架】Vue与React中的组件框架概念

组件框架是用于构建应用程序的工具,以便将UI和逻辑划分为单独的可重用组件。目前的组件框架包括React、Vue、Angular、Ember、Svelte等。 Vue和React使用了常见的框架概念,如处理状态、道具、引用、生命周期挂钩、事件等。这两个框架在当今的web开发中被…

使用.NET8中的.http文件和终结点资源管理器

本文将以.NET8的模板增加的.http文件为引,介绍 Visual Studio 2022 中的 .http 文件编辑器,这是一个用于测试 ASP.NET Core 项目的强大工具。 文章目录 1. 背景2. HTTP 文件介绍2.1 简介2.2 .http 文件语法3. 在 Visual Studio 中使用3.1 终结点资源管理…

大数据平台/大数据技术与原理-实验报告--部署全分布模式HBase集群和实战HBase

实验名称 部署全分布模式HBase集群和实战HBase 实验性质 (必修、选修) 必修 实验类型(验证、设计、创新、综合) 综合 实验课时 2 实验日期 2023.11.07-2023.11.10 实验仪器设备以及实验软硬件要求 专业实验室&#xff…

【Apifox】测试工具自动编写接口文档

在开发过程中,我们总是避免不了进行接口的测试, 而相比手动敲测试代码,使用测试工具进行测试更为便捷,高效 今天发现了一个非常好用的接口测试工具Apifox 相比于Postman,他还拥有一个非常nb的功能, 在接…

交流负载测试使用场景

交流负载测试是一种在特定环境下,对电力设备、汽车电子部件,工业自动化设备、网络设备、家电产品,航空航天设备以及医疗器械等产品进行测试的方法,该测试的目的是评估这些设备在实际运行条件下的性能和可靠性。 1电力设备测试 交…

没有预装Edge浏览器的Windows系统安装Edge正式版的方法,离线安装和在线安装

一、在线安装 没有预装Edge浏览器的Windows系统安装Edge正式版的方法 二、离线安装 进入到下面这个目录 C:\Program Files (x86)

vivado产生报告阅读分析27

1、设计 QoR 汇总 命令行选项 -qor_summary 可用于为流程中每个步骤生成 QoR 汇总信息。该选项只能从 Tcl 控制台使用。该选项可按两种格式生成: 基于文本的报告或 JSON 格式。 要生成基于文本的格式 , 请运行以下命令 : report_des…

Jquery动画特效

1&#xff0c;Jquery提供的特效方法 2&#xff0c;实例代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

冒泡排序以及改进方案

冒泡排序以及改进方案 介绍&#xff1a; 冒泡排序属于一种典型的交换排序&#xff08;两两比较&#xff09;。冒泡排序就像是把一杯子里的气泡一个个往上冒一样。它不断比较相邻的元素&#xff0c;如果顺序不对就像水泡一样交换它们的位置&#xff0c;直到整个序列像水泡一样…

矩阵连乘问题

1、求解矩阵连乘问题。 要求: 分别用自底向上的动态规划方法和自顶向下的备忘录方法计算最优值并构造最优解&#xff0c;通过实例比较两种方法的结果和效率。 思路 1)寻找最优子结构&#xff1a; 此问题最难就在于此&#xff0c;对于乘积的任意位置加括号都会将序列在某个…

C#简化工作之实现网页爬虫获取数据

1、需求 想要获取网站上所有的气象信息&#xff0c;网站如下所示&#xff1a; 目前总共有67页&#xff0c;随便点开一个如下所示&#xff1a; 需要获取所有天气数据&#xff0c;如果靠一个个点开再一个个复制粘贴那么也不知道什么时候才能完成&#xff0c;这个时候就可以使用C#…

unity3d NPC寻路时相互挤压、导致离目标越来越远

更改寻路代理 约束的大小&#xff0c;人物周围绿色圆柱范围线&#xff0c;尽量调小

23种设计模式之C++实践

23种设计模式之C++实践 1. 简介2. 基础知识3. 设计模式(一)创建型模式1. 单例模式1.2 饿汉式单例模式1.3 懒汉式单例模式比较IoDH单例模式总结2. 简单工厂模式简单工厂模式总结3. 工厂方法模式工厂方法模式总结4. 抽象工厂模式抽象工厂模式总结5. 原型模式原型模式总结6. 建造…

MySQL索引优化实战一

#插入一些示例数据drop procedure if exists insert_emp;delimiter ;;create procedure insert_emp()begindeclare i int;set i1;while(i<100000)doinsert into employees(name,age,position) values(CONCAT(tqq,i),i,dev);set ii1;end while;end;;delimiter ;call insert_e…