你好啊,Spring !!!
发布日期:2021-06-27 12:55:30 浏览次数:35 分类:技术文章

本文共 2904 字,大约阅读时间需要 9 分钟。

你好啊,Spring !!!

前言

最近在想是否去写一个系列的文章,但怕被一些事给影响,就一直没有动手去执行,准备了一段时间,今天算第一篇专题文章吧。希望对大家有用。2021,一起变好!!!

初识Spring

在这里插入图片描述

一、Spring

什么是Spring?

“Spring是分层的JavaSE/EE full-stack 轻量级开源框架,以IoC(Inverse of Control 控制反转)和AOP(Aspect Oriented Programming 面向切面编程)为内核,使用基本的JavaBean来完成以前只可能由EJB(企业JavaBean)完成的工作,取代了EJB的臃肿、低效的开发模式。”

可能你还不完全理解这句话,但是我们可以知道的是Spring提出了使用基本JavaBean完成企业级JavaBean才能完成的工作的解决方案。那么是什么样的解决方案呢?不急,咱们慢慢来。

我们都知道,在实际开发中,通常服务器端采用三层体系架构(表示层(Web)、业务逻辑层(Service)、持久层(Dao)),而Spring通过对每一层提供相应的技术支持,从而简化了开发、降低了项目测试门槛、降低了JavaBean间的耦合性。

在这里插入图片描述

那么Spring为什么如此倍受Java开发人员的青睐呢?看了Spring的优点就知道了。

  • 非侵入式:基于Spring开发的应用中的对象可以不依赖Spring的API

  • 组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用。(使用XML和Java注解组合这些对象)

  • 支持AOP(面向切面编程)后面文章专门讨论。

  • Spring提供了一致的事务管理接口,可向下扩展到本地事务并扩展到全局事务

  • 由于项目环境中的相关代码被移入了Spring框架,因此测试一个Spring应用程序很容易,同时通过使用JavaBean-style POJO,使得使用依赖注入测试数据时变得更容易。

  • Spring将项目中重复的模块提出来,形成独立的框架,如日志框架、ORM框架。当人们再次使用时,可直接加入即可。

  • Spring对JavaEE开发中难用的API提供了封装,使得这些API应用难度大大降低。

总结

在这里插入图片描述

二、Spring的体系结构

在这里插入图片描述

虽然Spring框架为开发者提供了20个模块,但是开发中我们可以根据应用程序的要求来使用这些模块。

Core Container(核心容器)

在这里插入图片描述

  • Beans

    1、提供了BeanFactory,工厂模式的微妙实现,它移除了编码式单例的需要,并且可以把配置和依赖从实际编码逻辑中解耦。
    2、Spring将管理对象称为Bean

  • Core:提供了框架的基本组成部分,包括 IoC 和(DI)依赖注入功能。

  • Context

    1、建立在Core和Beans模块的基础之上,它是访问定义和配置的任何对象的媒介。它以一种类似于 JNDI 注册的方式访问对象
    2、Context 模块继承自 Bean 模块,并且添加了国际化(比如,使用资源束)、事件传播、资源加载和透明地创建上下文(比如,通过 Servelet 容器)等功能。
    3、支持 Java EE 的功能,比如 EJB、JMX 和远程调用等

  • SpEL:Spring3.0后新增的模块,是运行时查询和操作对象图的强大的表达式语言。

Data Access/Integration(数据访问/集成)

在这里插入图片描述

  • JDBC(Java Data Base Connectivity)

    1、提供了一个JDBC的抽象层,大幅度的减少了在开发过程中的数据库操作的编码
    2、消除了冗长的JDBC编码和对数据库供应商特定错误代码的解析

  • ORM(Object Relational Mapping)

    1、对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配现象的技术。
    2、提供了对流行的对象关系映射 API 的集成,包括 JPA、JDO 和 Hibernate 等。通过此模块可以让这些 ORM 框架和 spring的其它功能整合,比如前面提及的事务管理。

  • OXM(Object XML Mapping):提供了一个支持对象/ XML映射的抽象层实现,如JAXB、Castor、XMLBeans、JiBX和XStream。

  • JMS(Java Message Service):指Java消息传递服务,包含使用和产生信息的特性,自4.1版本后支持与Spring-message模块的集成。

  • Transactions:支持对实现特殊接口以及所有POJO类的编程和声明式的事务管理。

补充:POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。

Web

在这里插入图片描述

  • Web:提供了基本的Web开发集成特性,如:多文件上传、使用Servlet监听器来初始化IoC容器以及Web应用上下文。

  • Servlet:Spring-web MVC模块,包含Spring模型-视图-控制器(MVC)和REST Web Services实现的Web程序。

  • Portlet:提供了在Portlet环境中使用MVC实现,类似Servlet模块的功能。

  • WebSocket:Spring 4.0以后新增的模块,它提供了WebSocket和SocketJS的实现,以及对STOMP的支持。

其他

在这里插入图片描述

  • AOP:提供了面向切面的编程实现,允许你定义方法拦截器和切入点对代码进行干净地解耦,从而使实现功能的代码彻底的解耦出来。使用源码级的元数据,可以用类似于.NET属性的方式合并行为信息到代码中。

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

  • Instrumentation:在一定的应用服务器中提供了类 instrumentation 的支持和类加载器的实现。

  • Messaging:为 STOMP 提供了支持作为在应用程序中 WebSocket 子协议的使用。它也支持一个注解编程模型,它是为了选路和处理来自 WebSocket 客户端的 STOMP 信息。

  • Test:支持对具有 JUnit 或 TestNG 框架的 Spring 组件的测试。

三、Spring框架文件说明

在这里插入图片描述

文件名称 说明
libs 包含JAR包和源码
docs 包含API文档和开发规范
Schema 包含开发所需要的schema文件

libs目录如下

在这里插入图片描述
libs目录JAR文件说明

文件名称 说明
.RELEASE.jar class文件JAR包
.RELEASE-javadoc.jar API文档压缩包
.RELEASE-sources.jar 源文件压缩包

第三方依赖包说明

在使用Spring开发时,除了要使用自带的JAR包外,Spring的核心容器还需要依赖commons.logging的JAR包。

链接| https://repo.spring.io/webapp/#/home

转载地址:https://blog.csdn.net/weixin_43452424/article/details/113267634 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:来,一起创建你的第一个区块链吧!!
下一篇:好家伙,我又被Tomcat干掉了!!!

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年03月27日 01时58分40秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java 远程 yarn jar_再论Yarn Client和Yarn cluster 2019-04-21
java单元测试断言_单元测试+断言 2019-04-21
java 创建压缩包_用Java创建ZIP压缩文件 2019-04-21
java typedarray_TintTypedArray.java 2019-04-21
java字符字面量_java – 字符串字面量的行为是令人困惑的 2019-04-21
php判断数组的值是否为空,PHP判断数组是否为空的常用方法(五种方法) 2019-04-21
php 读数据库,PHP数据库 2019-04-21
PHP能不能下载报表,PHP生成Excel报表的方法 2019-04-21
php mht2html,PHP 处理 mht 文件 2019-04-21
rt2tr matlab,MATLAB机器人工具箱参考 2019-04-21
MATLAB中GUI界面弹出菜单的使用,Matlab GUIDE使用说明(Matlab GUI界面) 2019-04-21
win iis对比apache php,服务器Apache与IIS的区别 2019-04-21
怎样用xampp测试php环境变量,使用xampp配置php运行环境的方法 2019-04-21
qq互联php教程,thinkphp5怎么整合qq互联登录教程 2019-04-21
Java怎么比较4数字大小,怎么判断四个数不成比例-判断4个数值相等-数学-古残夷同学... 2019-04-21
mysql建立索引 性能测试_MySQL分区和索引性能测试 2019-04-21
数据结构java实验 刘小晶_数据结构实例解析与实验指导:Java语言描述 2019-04-21
java实现 k nn算法_java-C中的k-NN示例问题(OpenCV) 2019-04-21
java接口的理解_Java接口的理解 - rabbit_mom的个人空间 - OSCHINA - 中文开源技术交流社区... 2019-04-21
java重用名快捷键_Eclipse 最常用的 10 组快捷键,个个牛逼! 2019-04-21