当前位置: 首页 > news >正文

Spring——Spring基础介绍

Spring基础介绍目录

  • 1. Spring框架简介
  • 2. Spring的优点
    • 2.1 轻量
    • 2.2 针对接口编程
    • 2.3 AOP编程支持
    • 2.4 方便继承各种优秀框架
  • 3. Spring的体系结构
    • 3.1 Core Container(核心容器)
    • 3.2 Data Access/Integration(数据访问/集成)
    • 3.3 Web
    • 3.4 其他模块

1. Spring框架简介

    Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,它是为了解决企业应用开发的复杂性而创建的。Spring 的核心是控制反转(IoC)面向切面编程(AOP)。Spring 是可以在 Java SE/EE 中使用的轻量级开源框架。
    Spring 的主要作用就是为代码“解耦”,降低代码间的耦合度。就是让对象和对象(模块和模块)之间关系不是使用代码关联,而是通过配置来说明。即在 Spring 中说明对象(模块)的关系。
    Spring 根据代码的功能特点,使用 Ioc 降低业务对象之间耦合度。IoC 使得主业务在相互调用过程中,不用再自己维护关系了,即不用再自己创建要使用的对象了。而是由 Spring 容器统一管理,自动“注入”,注入即赋值。 而 AOP 使得系统级服务得到了最大复用,且不用再由程序员手工将系统级服务“混杂”到主业务逻辑中了,而是由 Spring 容器统一完成“注入”。

2. Spring的优点

    Spring 是一个框架,是一个半成品的软件。有 20 个模块组成。它是一个容器管理对象, 容器是装东西的,Spring 容器不装文本,数字。装的是对象。Spring 是存储对象的容器。

2.1 轻量

    Spring 框架使用的 jar 都比较小,一般在 1M 以下或者几百 kb。Spring 核心功能的所需的 jar 总共在 3M 左右。Spring 框架运行占用的资源少运行效率高不依赖其他 jar

2.2 针对接口编程

    Spring 提供了 Ioc 控制反转,由容器管理对象,对象的依赖关系。原来在程序代码中的对象创建方式,现在由容器完成。对象之间的依赖解耦合

2.3 AOP编程支持

    通过 Spring 提供的 AOP 功能,方便进行面向切面的编程,许多不容易用传统 OOP 实现的功能可以通过 AOP 轻松应付,在 Spring 中,开发人员可以从繁杂的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

2.4 方便继承各种优秀框架

    Spring 不排斥各种优秀的开源框架,相反 Spring 可以降低各种框架的使用难度,Spring 提供了对各种优秀框架(如 Struts2,Hibernate、MyBatis)等的直接支持。简化框架的使用。
    Spring 像插线板一样,其他框架是插头,可以容易的组合到一起。需要使用哪个框架,就把这个插头放入插线板。不需要可以轻易的移除。

3. Spring的体系结构

在这里插入图片描述

3.1 Core Container(核心容器)

    Spring的核心容器是其他模块建立的基础,它主要由Beans模块、Core模块、Context模块、Context-support模块和SpEL(Spring Expression Language,Spring表达式语言)模块组成,具体介绍如下:

  • Beans模块:提供了BeanFactory,是工厂模式的经典实现,Spring将管理对象称为Bean。

  • Core核心模块:提供了Spring框架的基本组成部分,包括IoCDI功能

  • Context 上下文模块:建立在Core和Beans模块的基础之上,它是访问定义和配置的任何对象的媒介。其中ApplicationContext接口是上下文模块的焦点。

  • Context-support模块:提供了对第三方库嵌入Spring应用的集成支持,比如缓存(EhCache、Guava、JCache)、邮件服务(JavaMail)、任务调度(CommonJ、Quartz)和模板引擎(FreeMarker、JasperReports、速率)。

  • SpEL模块:是Spring3.0后新增的模块,它提供了Spring Expression Language支持,是运行时查询和操作对象图的强大的表达式语言。

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

    数据访问/集成层包括JDBC、ORM、OXM、JMS和Transactions模块,具体介绍如下:

  • JDBC模块:提供了一个JDBC的抽象层,大幅度的减少了在开发过程中对数据库操作的编码

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

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

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

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

3.3 Web

    Spring的Web层包括WebSocket、Servlet、Web和Portlet模块,具体介绍如下:

  • WebSocket模块:Spring4.0以后新增的模块,它提供了WebSocket 和SockJS的实现,以及对STOMP的支持。

  • Servlet 模块:也称为Spring-webmvc模块,包含了Spring的模型—视图—控制器(MVC)和REST Web Services实现的Web应用程序。

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

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

3.4 其他模块

    Spring的其他模块还有AOP、Aspects 、Instrumentation 以及Test模块,具体介绍如下:

  • AOP模块:提供了面向切面编程实现,允许定义方法拦截器切入点,将代码按照功能进行分离,以降低耦合性

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

  • Instrumentation 模块:提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。

  • Messaging模块:Spring4.0以后新增的模块,它提供了对消息传递体系结构协议的支持

  • Test模块:提供了对单元测试和集成测试的支持。

相关文章:

  • C语言入门(七)while和do-while循环
  • 猿创征文|算法刷题——哈希
  • 基于阿里云 Serverless 快速部署 function 的极致体验
  • docker 如何查看运行中的容器
  • 数学建模十大算法02—插值与拟合(拉格朗日插值、三次样条插值、线性最小二乘法……)
  • 嵌入式Linux入门-异常与中断(流程+寄存器全解析)
  • java计算机毕业设计-体育新闻网站-源码+系统+数据库+lw文档+mybatis+运行部署
  • 基于QT的opencv照片美颜及背景更换
  • [车联网安全自学篇] Android安全之检测APK中异常处理代码是否暴露敏感信息
  • Java基础语法
  • 谷粒商城 renren-fast pom文件报红
  • A40I工控主板(SBC-X40I)LVDS显示屏测试
  • C语言实现环形缓冲区
  • TCP如何确保可靠传输(确认应答,重传机制,滑动窗口,流量控制)
  • Mock.js概述及模块化开发实践(一文足矣)
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • Babel配置的不完全指南
  • CAP 一致性协议及应用解析
  • Gradle 5.0 正式版发布
  • iOS编译提示和导航提示
  • IP路由与转发
  • JS+CSS实现数字滚动
  • Linux Process Manage
  • markdown编辑器简评
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 高性能JavaScript阅读简记(三)
  • 前端工程化(Gulp、Webpack)-webpack
  • 如何解决微信端直接跳WAP端
  • 使用权重正则化较少模型过拟合
  • 算法-图和图算法
  • 译有关态射的一切
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # include “ “ 和 # include < >两者的区别
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #stm32驱动外设模块总结w5500模块
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (七)Knockout 创建自定义绑定
  • (十一)图像的罗伯特梯度锐化
  • (五)MySQL的备份及恢复
  • (转)Mysql的优化设置
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .net网站发布-允许更新此预编译站点
  • @ConfigurationProperties注解对数据的自动封装
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • @html.ActionLink的几种参数格式
  • @ModelAttribute 注解
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [2010-8-30]
  • [20171101]rman to destination.txt
  • [Android]Android开发入门之HelloWorld
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作