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

😉😉 学习交流群:

✅✅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:以上内容,进群免费领取呦~ 💞💞💞💞

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

物理机虚拟化关键技术介绍

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、虚拟化原理 将多个“同质或异构”资源(包括但不限于芯片、硬件、软件、应用)形成一个资源池,对资源池进行抽象、解耦形成独立的“虚拟资源”,并实现虚拟资…

MySql之内连接,外连接,左连接,右连接以及子查询举例详解

一.数据准备 资源绑定中有sql执行语句,直接复制粘贴,用navicat执行创建表并插入数据 (有需要的可自行下载,如有问题可在评论区留言) students,scores,courses三张表的联系如下图所示 二.内连接…

p11 第60题 设计一个算法,逆序单链表中的数据 电子科技大学2014年数据结构(c语言代码实现)

通过头插法可以实现单链表的逆置 下方博客有图解: 王道p40 5.将带头结点的单链表就地逆置,所谓“就地”是指辅助空间复杂度为O(1)-CSDN博客 单链表的逆置可以通过遍历链表,逐个将节点取出并插入到新链表的头部来实现…

pandas教程:USDA Food Database USDA食品数据库

文章目录 14.4 USDA Food Database(美国农业部食品数据库) 14.4 USDA Food Database(美国农业部食品数据库) 这个数据是关于食物营养成分的。存储格式是JSON,看起来像这样: {"id": 21441, &quo…

0004Java程序设计-ssm基于微信小程序的校园第二课堂

文章目录 摘 要目录系统设计开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅🐧裙:776871563 摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。…

Doris-集群部署(四)

创建目录并拷贝编译后的文件 1)创建目录并拷贝编译后的文件 mkdir /opt/module/apache-doris-0.15.0 cp -r /opt/software/apache-doris-0.15.0-incubating-src/output /opt/module/apache-doris-0.15.02)修改可打开文件数(每个节点&#x…

IOC DI入门

1.加上Component,控制翻转,将service和dao都交给IOC容器管理,成为IOC容器中的bean。用哪个类就在哪个类上面加component。 2.加上autowired。依赖注入。controller依赖于service,service依赖于dao。加上时,IOC容器会提…

2020年3月2日 Go生态洞察:Go协议缓冲区的新API发布

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

MySQL数据库【一】

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

中小型公司如何搭建运维平台,rancher、kubersphere、rainbond

很多开发人员应该是了解过运维发布相关的平台或实际操作过应用发布,但又通常不是十分熟悉。在一个初创公司,或者没有成熟的运维发布平台的公司,如果让你来搭建一套发布平台,你应该如何去抉择呢? 这里我简单介绍几种。…

diffusion model (九) EmuEdit技术小结

文章目录 背景1 核心思想2 方法2.1 方法建模2.2 数据工程2.2.1 image-edit任务类别定义2.2.2 指令集生成2.2.3 图片对的生成 3 结果 Paper: https://emu-edit.metademolab.com/assets/emu_edit.pdf Project web: https://emu-edit.metademolab.com/ Code: have not opensourc…

干货分享 | TSMaster采样点配置方法与消除错误帧流程

当通讯节点间采样点参数和波特率参数不匹配造成一些错误帧时,我们如何在TSMaster中设置以及调整波特率参数和采样点参数,来减少以及消除总线上出现的错误帧,进一步提高通信质量。本文着重讲解讲解如何借用TSmaster更加便捷地获取相应的采样点…

【精】A data-driven dynamic repositioning model in bicycle-sharing systems

A data-driven dynamic repositioning model in bicycle-sharing systems 爱思唯尔原文 doi:https://doi.org/10.1016/j.ijpe.2020.107909 article{data2021BRP, address {Univ Cambridge, Inst Mfg, Cambridge CB3 0FS, England}, author {Zhang, Jie and Meng, Meng and W…

微服务--04--SpringCloudGateway 网关

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.网关路由1.1 认识网关在SpringCloud当中,提供了两种网关实现方案: 1.2.快速入门1.3.路由过滤 2.网关登录校验2.1.鉴权思路分析2.2.网关过滤…

力扣23. 合并 K 个升序链表(java,最小堆解法)

Problem: 23. 合并 K 个升序链表 文章目录 题目描述思路解题方法复杂度Code 题目描述 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 思路 1.对于合并k个有序链表,我们较为容易想…

Java —— 泛型

目录 1. 什么是泛型 2. 泛型背景及其语法规则 3. 泛型类的使用 3.1 语法 3.2 示例 3.3 类型推导(Type Inference) 4. 裸类型(Raw Type) 4.1 说明 5. 泛型如何编译的 5.1 擦除机制 5.2 为什么不能实例化泛型类型数组 6. 泛型的上界 6.1 上界语法产生的背景 6.2 语法 6.3 示例 6.…

Node.js入门指南(完结)

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

elk日志分析系统:

elk日志分析系统: elk是一套完整的日志集中处理方案,由三个开源的软件简称组成; E:Easticsearch 简称ES是一个开源的,分布式的存储检索引擎,(索引型的非关系数据库)存储日志 由java代码开发的&#xff0…

麒麟V10桌面搭建FTP服务

1.1介绍 FTP:File transfer protocol (文件传输协议)是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FT…

知识变现的未来:解析知识付费系统的核心

随着数字时代的发展,知识付费系统作为一种新兴的学习和知识分享模式,正逐渐引领着知识变现的未来。本文将深入解析知识付费系统的核心技术,揭示其在知识经济时代的重要性和潜力。 1. 知识付费系统的基本架构 知识付费系统的核心在于其灵活…