Spring系统学习 - Spring入门

server/2024/10/11 9:24:07/

什么是Spring?

Spring翻译过来就是春天的意思,字面意思,冠以Spring的意思就是想表示使用这个框架,代表程序员的春天来了,实际上就是让开发更加简单方便,实际上Spring确实做到了。

官网地址:https://spring.io/

Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用。Spring 框架来创建性能好、易于测试、可重用的代码。也是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。

Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO编程模型来促进良好的编程实践。

Spring 家族

项目列表:https://spring.io/projects

Spring Framework
Spring 基础框架,可以视为 Spring 基础设施,基本上任何其他 Spring 项目都是以 Spring Framework为基础的。包括SpringBoot,SpringCloud等等。

Spring Framework特性

在这里插入图片描述
数据访问/集成(Data Access/Integration):

  • JDBC: 提供了Java数据库连接,简化了数据库操作。
  • ORM: 对象关系映射,支持如Hibernate这样的ORM工具。
  • OXM: 对象XML映射,用于将对象与XML数据之间进行转换。
  • JMS: Java消息服务,用于处理消息。
  • 事务(Transactions): 提供了声明式和编程式的事务管理。

网络(Web):

  • WebSocket: 提供了WebSocket通信功能。
  • Servlet: 支持Servlet API。
  • Web: 包含多种Web开发的支持,如Spring MVC。
  • Portlet: 为Portlet环境提供了MVC实现。

面向切面编程(AOP):

  • AOP: 提供了面向切面编程的实现,允许定义方法拦截器和切点,以实现诸如事务管理、安全性等横切关注点。
  • Aspects: 与AOP相关的一些支持,如与AspectJ的集成。

仪器化(Instrumentation): 提供了类仪器化和资源管理的功能。
消息(Messaging): 提供了消息传递的支持,包括使用消息队列。

核心容器(Core Container):

  • Beans: 提供了Bean的定义、创建和管理。
  • Core: Spring框架的核心部分,包括IoC和依赖注入功能。
  • Context: 提供了框架式的对象访问,如国际化、事件传播等。
  • SpEL: Spring表达式语言,用于查询和操作对象图。

测试(Test): 提供了测试Spring组件的支持,如模拟对象和测试框架集成。

特性

  • 非侵入式:使用 Spring Framework 开发应用程序时,Spring 对应用程序本身的结构影响非常小。对领域模型可以做到零污染;对功能性组件也只需要使用几个简单的注解进行标记,完全不会破坏原有结构,反而能将组件结构进一步简化。这就使得基于 Spring Framework 开发应用程序时结构清晰、简洁优雅。
  • 控制反转:IOC——Inversion of Control,翻转资源获取方向。把自己创建资源、向环境索取资源,变成环境将资源准备好,我们享受资源注入。
  • 面向切面编程:AOP——Aspect Oriented Programming,在不修改源代码的基础上增强代码功能。
  • 容器:Spring IOC 是一个容器,因为它包含并且管理组件对象的生命周期。组件享受到了容器化的管理,替程序员屏蔽了组件创建过程中的大量细节,极大的降低了使用门槛,大幅度提高了开发效率。
  • 组件化:Spring 实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用 XML和 Java 注解组合这些对象。这使得我们可以基于一个个功能明确、边界清晰的组件有条不紊的搭建超大型复杂应用系统。
  • 声明式:很多以前需要编写代码才能实现的功能,现在只需要声明需求即可由框架代为实现。
  • 一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。而且Spring 旗下的项目已经覆盖了广泛领域,很多方面的功能性需求可以在 Spring Framework 的基础上全部使用 Spring 来实现。

Spring Framework五大功能模块

功能模块功能介绍
Core Container核心容器,在 Spring 环境下使用任何功能都必须基于 IOC 容器。
AOP&Aspects面向切面编程
Testing提供了对 junit 或 TestNG 测试框架的整合。
Data Access/Integration提供了对数据访问/集成的功能。
Spring MVC提供了面向Web应用程序的集成功能。

Spring框架的主要模块包括:

  • Spring Core:提供核心的依赖注入(DI)功能。
  • Spring AOP:支持面向切面编程(AOP),允许在不修改代码的情况下添加行为。
  • Spring MVC:用于构建基于Web的应用程序,提供了强大的MVC架构。
  • Spring Data:简化了数据访问层的开发,支持多种数据存储技术。
  • Spring Security:提供全面的安全功能,包括认证和授权。
  • Spring Boot:简化了Spring应用程序的配置和部署,提供了开箱即用的默认设置。

特性功能

  • 依赖注入(DI):通过依赖注入,Spring可以自动管理对象之间的依赖关系,减少了代码的耦合度。
  • 面向切面编程(AOP):允许开发者在不修改业务逻辑代码的情况下,添加横切关注点(如日志记录、事务管理等)。
  • 事务管理:Spring提供了声明式事务管理,简化了事务的处理。
  • 数据访问:Spring Data模块支持多种数据存储技术(如JPA、MongoDB、Redis等),简化了数据访问层的开发。
  • 集成测试:Spring提供了强大的测试支持,允许开发者轻松编写和运行集成测试。
  • 模块化设计:Spring框架是模块化的,开发者可以根据需要选择使用不同的模块。
  • Spring Boot:通过Spring Boot,开发者可以快速创建独立的、生产级的Spring应用程序,减少了配置的复杂性。

使用Spring的好处

  • 简化开发:Spring的依赖注入和面向切面编程功能大大简化了开发过程,使代码更加简洁和易于维护。
  • 提高生产力:Spring Boot提供了开箱即用的默认设置和自动配置,显著提高了开发效率。
  • 可测试性:Spring框架提供了强大的测试支持,使得单元测试和集成测试更加容易。
  • 灵活性和可扩展性:Spring的模块化设计和丰富的生态系统使得应用程序可以灵活地扩展和集成各种第三方库和服务。
  • 社区支持:Spring拥有庞大的社区和丰富的文档资源,开发者可以轻松找到解决方案和最佳实践。
  • 企业级功能:Spring提供了全面的企业级功能,如事务管理、安全、数据访问等,满足复杂业务需求。

http://www.ppmy.cn/server/46562.html

相关文章

LabVIEW在高校电力电子实验中的应用

概述:本文介绍了如何利用LabVIEW优化高校电力电子实验,通过图形化编程实现参数调节、实时数据监控与存储,并与Simulink联动,提高实验效率和数据处理能力。 需求背景高校实验室在进行电机拖动和电力电子实验时,通常使用…

基于Springboot驾校预约平台小程序的设计与实现(源码+数据库+文档)

一.项目介绍 系统角色:管理员、教练、学员 小程序(仅限于学员注册、登录): 查看管理员发布的公告信息 查看管理员发布的驾校信息 查看所有教练信息、预约(需教练审核)、评论、收藏喜欢的教练 查看管理员发布的考试信息、预约考试(需管理…

Python——cv2 判断图像读取内容是否为空

import cv2 pic_path"xxx.jpg" imagecv2.imread(pic_path) if None image:print("图片为空") else:print("图片不为空")

EureKa是什么?

Eureka 是一个源于 Netflix 公司的开源项目,主要用于实现服务注册和服务发现的功能。它是构建分布式系统中的微服务架构的一个关键组件。下面是对 Eureka 的解释: 基本概念 Eureka 是基于 REST 的服务,主要用于管理微服务架构中的服务实例的…

GPT-4o:人工智能的新篇章

GPT-4o:人工智能的新篇章 简介 人工智能领域不断进步,GPT系列作为其中的佼佼者,其最新版本GPT-4o的推出引起了广泛关注。本文将对GPT-4o进行评价,从版本对比、技术能力到个人感受,全方位探讨这一革命性的语言模型。 …

微信小程序对接发货功能

注:微信小程序对接发货功能 文档地址:https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html php代码 common.php use think\Config; use think\Db; use fast\Http; us…

FreeRTOS学习笔记【1】

本文章为本人学习FreeRTOS时的笔记,学习时使用 STM32 SPL库Keil开发环境。 之前发过这篇文章但不知为何在CSDN上MD格式无法显示,故重新发一次。(真不是水浏览量) 文章目录 操作系统启动步骤1.定义任务函数2.空闲任务与定时器任务堆栈函数实现3.定义任务…

Python函数式编程进阶:装饰器和闭包介绍

文章目录 Python函数式编程进阶:函数装饰器和闭包介绍一个简单的装饰器实现和行为表现装饰器通常会把函数替换成另一个函数Python导入模块时首先就会运行装饰器闭包__closure__属性可以查看闭包的自由变量总结 nonlocal声明 Python函数式编程进阶:函数装…