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

Spring Boot学习路线1

Spring Boot是什么?

Spring Boot是基于Spring Framework构建应用程序的框架,Spring Framework是一个广泛使用的用于构建基于Java的企业应用程序的开源框架。Spring Boot旨在使创建独立的、生产级别的Spring应用程序变得容易,您可以"只是运行"这些应用程序。

术语

Spring Core是Spring Framework的基础,为基于Java的应用程序提供了全面的编程和配置模型。这里是与Spring Core相关的一些关键术语和概念:

  • Bean:在Spring中,“bean”是由Spring容器管理的Java对象。通常使用配置元数据来定义bean,可以在XML、Java注释或Java代码中指定。
  • 控制反转(IoC):Spring的主要原则之一是控制反转(IoC),这意味着Spring容器负责管理bean的生命周期并注入其依赖项。
  • 依赖注入(DI):Spring使用依赖注入(DI)来管理bean之间的依赖关系。在DI中,对象的依赖项由容器提供,而不是对象自己创建或查找其自己的依赖项。
  • 容器:Spring容器是Spring Framework的核心部分,它创建和管理bean及其依赖项。
  • ApplicationContext:ApplicationContext是Spring容器的实现。它负责加载和管理配置元数据,并创建在该元数据中定义的bean。
  • 面向切面编程(AOP):Spring支持面向切面编程(AOP),允许您将横切关注点(例如日志记录或安全性)与应用程序的业务逻辑分离。
  • 事件:Spring提供了一种事件模型,允许bean发送和接收事件。这用于将bean彼此解耦,使应用程序更松散耦合。
  • ApplicationEvent和监听器:Spring支持发布订阅模型来处理事件,ApplicationEvent定义事件对象,监听器是实现ApplicationListener接口的类,监听特定事件并采取必要的操作。
  • 数据访问:Spring使用各种框架(如JDBC、Hibernate、JPA)提供了一致的高级数据访问抽象。
  • 事务:Spring提供了一种灵活、一致且易于声明式地使用不同底层技术(如JPA、JDBC和Hibernate)管理事务的方法。
  • 任务执行和调度:Spring提供了TaskExecutor和TaskScheduler,提供了一种方便的方式来并发运行任务,在计划的基础上或异步运行。

架构

Spring Boot采用分层架构,每个层次与其直接上层或下层(分层结构)通信。 Spring Boot的四个层如下:

  • 表现层:处理HTTP请求,将JSON参数转换为对象,并对请求进行身份验证并将其传输到业务层。
  • 业务层:业务层处理所有业务逻辑。 它由服务类组成,并使用数据访问层提供的服务。 它还执行授权和验证。
  • 持久层:持久层包含所有存储逻辑,并将业务对象从数据库行翻译成翻译。
  • 数据库层:在数据库层中执行CRUD(创建,检索,更新,删除)操作。

为什么选Spring Boot?

Spring Boot提供了许多功能,使创建基于Spring的应用程序变得更加容易,包括:

  • 嵌入式应用服务器
  • 自动配置
  • 预配置的启动器
  • 方便的打包和分发
  • 通过内置的健康检查端点和能够自定义管理端点来方便监控。

此外,它还内置了许多最佳实践和公约,这减少了开发人员需要编写的工作量和样板代码。

Spring是一个开源框架,为现代基于Java的企业应用程序提供了全面的编程和配置模型。Spring的核心模块,也称为“Spring Core”模块,是框架的核心,为依赖注入(DI)和控制反转(IoC)提供了基本功能。除了依赖注入外,Spring Core模块还提供了其他几个功能,例如:

  • 灵活可扩展的验证框架
  • 类型转换系统
  • 一致的消息框架

配置

Spring核心配置是配置Spring框架的过程,它涉及指定应用程序正常运行所需的各种配置细节。这可以包括设置bean、指定bean依赖项、配置面向方面编程(AOP)方面等。配置可以通过Java代码、XML文件或使用代码中的注释来完成。

请通过以下链接了解有关Spring Core配置的更多信息:

  • Spring Framework文档

依赖注入

Spring Boot使用Spring框架的控制反转(IoC)容器来管理对象及其依赖关系。IoC容器负责创建对象、将它们连接起来并管理它们的生命周期。当创建一个对象时,它的依赖关系也会被创建并注入到该对象中。

Spring IOC

控制反转(IoC)是一种设计模式,通常与依赖注入(DI)模式一起使用。 IoC的基本思想是反转程序的控制流,使得对象自己控制逻辑流程和其他对象的创建,而不是程序控制逻辑流程和对象的创建。

Spring是一个流行的Java框架,使用IoC和DI提供更灵活,模块化的软件开发方法。 Spring IoC容器负责管理Spring应用程序中对象的创建和配置。

Spring IoC容器创建对象,将它们连接在一起,对它们进行配置,并管理它们从创建到销毁的完整生命周期。这减轻了应用程序代码实例化和配置对象的负担,并允许应用程序代码专注于业务逻辑而不是基础设施问题。

Spring IoC容器提供两种配置对象的方法:

  • 基于XML的配置
  • 基于注释的配置

在基于XML的配置中,您使用XML文件描述配置元数据,容器创建对象并将它们连接在一起。

在基于注释的配置中,您在Java源代码中使用注释描述配置元数据,容器创建对象并将其连接在一起。

无论哪种方式,Spring IoC容器都可以用于在Spring应用程序中创建,管理和连接对象,使用各种不同的策略,包括构造函数注入,设置器注入和接口注入。

总体而言,Spring IoC容器提供了一个集中管理应用程序中对象的生命周期和配置的位置,使得开发,测试和维护代码更加容易。

Sprint AOP

Spring AOP(面向切面编程)是Spring框架的一个特性,允许开发人员定义跨多个类的某些行为(即“方面”),例如日志记录或事务管理。这些行为被称为“通知”,可以应用于应用程序中的特定“连接点”(即程序执行中的点),使用“切入点”确定应该应用通知的位置。

Spring AOP允许开发人员将这些横切关注点的实现与应用程序的业务逻辑分开,使代码更模块化且更易于理解。这也可以使应用程序更加灵活,因为可以将相同的通知应用于代码的不同部分,而无需复制通知本身的代码。

Spring MVC

Spring MVC是一个用于在Java中构建Web应用程序的框架。它是Spring Framework的一部分,后者是构建Java应用程序的更大生态系统。Spring MVC建立在Model-View-Controller(MVC)设计模式之上,有助于将应用程序的关注点分为三个不同的组件:模型、视图和控制器。

Spring MVC提供了一种强大而灵活的构建Web应用程序的方式,并与Spring生态系统的其他部分(例如Spring Security用于身份验证和授权,以及Spring Data用于数据访问)很好地集成。

注解

  • Spring 核心教程

Spring Boot 的一个关键特性是使用注解来配置应用程序的各个方面并启用某些功能。

Spring Boot 中最常用的注解包括:

  • @SpringBootApplication
  • @RestController
  • @Autowired
  • @Value
  • @Enable
  • @Configuration
  • @Bean

这些只是 Spring Boot 中可用的众多注解的几个示例。 还有许多其他注解可用于配置应用程序的各个方面,例如安全性、缓存和数据访问。

Spring Bean Scope

在Spring框架中,Bean是由Spring IoC容器实例化、组装和管理的对象。Spring容器的一个关键特性是它能够管理Bean的生命周期,包括根据需要创建、配置和销毁Bean。容器控制Bean生命周期的一种方式是指定其作用域。

Bean的作用域确定了Bean在容器内和应用程序中其他对象中的生命周期和可见性。Spring提供了多种不同的Bean作用域,包括:

  • singleton:这是Bean的默认作用域。单例Bean只由容器实例化一次,并由请求它的所有对象共享。
  • prototype:这个作用域意味着容器每次请求时都创建一个Bean的新实例。
  • request:这个作用域仅适用于Web应用程序,表示容器为每个HTTP请求创建一个Bean的新实例。
  • session:类似于请求作用域,但Bean的实例是为每个HTTP会话创建的。
  • application:这个作用域是用于全局应用程序级别的数据,只在支持Web的Spring ApplicationContext中有效。
  • websocket:这个作用域是用于全局WebSocket级别的数据,也只在支持Web的Spring ApplicationContext中有效。

可以使用Bean元素的scope属性在配置文件中指定Bean的作用域。

选择正确的Bean作用域非常重要,因为它可能会影响应用程序的行为和性能。

以下是关于 Spring Core 的相关链接,您可以了解更多:

  • 官方网站
  • 官方文档
  • Spring 入门指南

最后

为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:

公众号搜索Let us Coding知乎开源中国CSDN思否掘金InfoQ简书博客园慕课51CTOhelloworld腾讯开发者社区阿里开发者社区

看完如果觉得有帮助,欢迎点赞、收藏关注

相关文章:

Spring Boot学习路线1

Spring Boot是什么? Spring Boot是基于Spring Framework构建应用程序的框架,Spring Framework是一个广泛使用的用于构建基于Java的企业应用程序的开源框架。Spring Boot旨在使创建独立的、生产级别的Spring应用程序变得容易,您可以"只是…...

管理类联考——写作——论说文——实战篇——标题篇

角度3——4种材料类型、4个立意对象、5种写作态度 经过审题立意后,我们要根据我们的立意,确定一个主题,这个主题必须通过文章的标题直接表达出来。 标题的基本要求 主题清晰,态度明确 第一,阅卷人看到一篇论说文的标…...

idea中设置maven本地仓库和自动下载依赖jar包

1.下载maven 地址&#xff1a;maven3.6.3 解压缩在D:\apache-maven-3.6.3-bin\apache-maven-3.6.3\目录下新建文件夹repository打开apache-maven-3.6.3-bin\apache-maven-3.6.3\conf文件中的settings.xml编辑&#xff1a;新增本地仓库路径 <localRepository>D:\apache-…...

前缀和差分

前缀和 前缀和&#xff1a;一段序列里的前n项和 给出n个数&#xff0c;在给出q次问询&#xff0c;每次问询给出L、R&#xff0c;快速求出每组数组中一段L至R区间的和 给出一段数组&#xff0c;每次问询为求出l到r区间的和 普通方法&#xff1a;L到R进行遍历&#xff0c;那么…...

Golang GORM 模型定义

模型定义 参考文档&#xff1a;https://gorm.io/zh_CN/docs/models.html 模型一般都是普通的 Golang 的结构体&#xff0c;Go的基本数据类型&#xff0c;或者指针。 模型是标准的struct,由Go的基本数据类型、实现了Scanner和Valuer接口的自定义类型及其指针或别名组成&#x…...

微服务的各种边界在架构演进中的作用

演进式架构 在微服务设计和实施的过程中&#xff0c;很多人认为&#xff1a;“将单体拆分成多少个微服务&#xff0c;是微服务的设计重点。”可事实真的是这样吗&#xff1f;其实并非如此&#xff01; Martin Fowler 在提出微服务时&#xff0c;他提到了微服务的一个重要特征—…...

使用 docker-compose 一键部署多个 redis 实例

目录 1. 前期准备 2. 导入镜像 3. 部署redis master脚本 4. 部署redis slave脚本 5. 模板文件 6. 部署redis 7. 基本维护 1. 前期准备 新部署前可以从仓库&#xff08;repository&#xff09;下载 redis 镜像&#xff0c;或者从已有部署中的镜像生成文件&#xff1a; …...

14-测试分类

1.按照测试对象划分 ①界面测试 软件只是一种工具&#xff0c;软件与人的信息交流是通过界面来进行的&#xff0c;界面是软件与用户交流的最直接的一层&#xff0c;界面的设计决定了用户对设计的软件的第一印象。界面如同人的面孔&#xff0c;具有吸引用户的直接优势&#xf…...

打开域名跳转其他网站,官网被黑解决方案(Linux)

某天打开网站&#xff0c;发现进入首页&#xff0c;马上挑战到其他赌博网站。 事不宜迟&#xff0c;不能让客户发现&#xff0c;得马上解决 我的网站跳转到这个域名了 例如网站跳转到 k77.cc 就在你们部署的代码的当前文件夹下面&#xff0c;执行下如下命令 find -type …...

redis总结

1.redis redis高性能的key-value数据库&#xff0c;支持持久化&#xff0c;不仅仅支持简单的key-value&#xff0c;还提供了list&#xff0c;set&#xff0c;zset&#xff0c;hash等数据结构的存储&#xff0c;支持数据的备份&#xff08;master-slave模式&#xff09; redis&…...

现代C++中的从头开始深度学习:激活函数

一、说明 让我们通过在C中实现激活函数来获得乐趣。人工神经网络是生物启发模型的一个例子。在人工神经网络中&#xff0c;称为神经元的处理单元被分组在计算层中&#xff0c;通常用于执行模式识别任务。 在这个模型中&#xff0c;我们通常更喜欢控制每一层的输出以服从一些约束…...

python怎么实现tcp和udp连接

目录 什么是tcp连接 什么是udp连接 python怎么实现tcp和udp连接 什么是tcp连接 TCP&#xff08;Transmission Control Protocol&#xff09;连接是一种网络连接&#xff0c;它提供了可靠的、面向连接的数据传输服务。 在TCP连接中&#xff0c;通信的两端&#xff08;客户端和…...

java设计模式-观察者模式(jdk内置)

上一篇我们学习了 观察者模式。 观察者和被观察者接口都是我们自己定义的&#xff0c;整个设计模式我们从无到有都是自己设计的&#xff0c;其实&#xff0c;java已经内置了这个设计模式&#xff0c;我们只需要定义实现类即可。 下面我们不多说明&#xff0c;直接示例代码&am…...

秒级体验本地调试远程 k8s 中的服务

点击上方蓝色字体&#xff0c;选择“设为星标” 回复”云原生“获取基础架构实践 背景 在这个以k8s为云os的时代&#xff0c;程序员在日常的开发过程中&#xff0c;肯定会遇到各种问题&#xff0c;比如&#xff1a;本地开发完&#xff0c;需要部署到远程k8s集群&#xff0c;本地…...

CV前沿方向:Visual Prompting 视觉提示工程下的范式

prompt在视觉领域&#xff0c;也越来越重要&#xff0c;在图像生成&#xff0c;作为一种可控条件&#xff0c;增进交互和可控性&#xff0c;在多模态理解方面&#xff0c;指令prompt也使得任务灵活通用。视觉提示工程&#xff0c;已然成为CV一个前沿方向&#xff01; 下面来看看…...

Redis五大基础类型解析

1.String类型 特征&#xff1a;即存储字符串的类型&#xff0c;单个字符串存储量最大不超过512MB 常用业务场景&#xff1a;⽤来存储JSON序列化之后对象 底层编码&#xff1a; int编码 数据结构特点&#xff1a;ptr指针直接指向字符串常量池中对应字符串地址&#xff0c;而…...

在CSDN学Golang云原生(服务网格istio)

一&#xff0c;在Kubernetes上部署istio 在Kubernetes上部署istio&#xff0c;可以按照以下步骤进行&#xff1a; 安装Istio 使用以下命令从Istio官网下载最新版本的Istio&#xff1a; curl -L https://istio.io/downloadIstio | ISTIO_VERSION<VERSION> sh - 其中&…...

Golang 获取本地 IP 地址方法

在 Golang 中&#xff0c;使用 net 包可以很方便地获取到本机IP地址。 借助 net.InterfaceAddrs 方法 简单示例代码如下&#xff1a; package mainimport ("fmt""net" )func main() {addrList, err : net.InterfaceAddrs()if err ! nil {panic(err)}for…...

抖音seo短视频账号矩阵系统技术开发简述

说明&#xff1a;本开发文档适用于抖音seo源码开发&#xff0c;抖音矩阵系统开发&#xff0c;短视频seo源码开发&#xff0c;短视频矩阵系统源码开发 一、 抖音seo短视频矩阵系统开发包括 抖音seo短视频账号矩阵系统的技术开发主要包括以下几个方面&#xff1a; 1.前端界面设…...

运维高级--shell脚本完成分库分表

为什么要进行分库分表 随着系统的运行&#xff0c;存储的数据量会越来越大&#xff0c;系统的访问的压力也会随之增大&#xff0c;如果一个库中的表数据超过了一定的数量&#xff0c;比如说MySQL中的表数据达到千万级别&#xff0c;就需要考虑进行分库分表&#xff1b; 其…...

go语言学习 第7章:数组

第7章&#xff1a;数组 数组是一种基本的数据结构&#xff0c;用于存储相同类型的元素集合。在Go语言中&#xff0c;数组的大小是固定的&#xff0c;一旦定义&#xff0c;其长度不可改变。本章将详细介绍Go语言中数组的定义、初始化、访问、遍历以及一些常见的操作。 一、数组…...

程序代码篇---Python串口

在 Python 里&#xff0c;serial库&#xff08;一般指pyserial&#xff09;是串口通信的常用工具。下面为你介绍其常用的读取和发送操作函数及使用示例&#xff1a; 1. 初始化串口 要进行串口通信&#xff0c;首先得对串口对象进行初始化&#xff0c;代码如下&#xff1a; i…...

Mysql-定时删除数据库中的验证码

Moudle 1 使用调度器定时删除事件 数据库实现验证码自动删除的解决方案 -- 删除旧事件&#xff08;如果存在&#xff09; DROP EVENT IF EXISTS delete_expired_captchas;-- 创建新事件&#xff08;每分钟执行一次&#xff09; CREATE EVENT delete_expired_captchas ON SCHE…...

C++课设:实现简易文件加密工具(凯撒密码、异或加密、Base64编码)

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 专栏介绍&#xff1a;《编程项目实战》 目录 一、初识文件加密&#xff1a;为什么需要…...

【后端】RPC

不定期更新。 定义 RPC 是 Remote Procedure Call 的缩写&#xff0c;中文通常翻译为远程过程调用。作用 简化分布式系统开发。实现微服务架构&#xff0c;便于模块化、复用。提高系统性能和可伸缩性。提供高性能通信、负载均衡、容错重试机制。 在现代分布式系统、微服务架构…...

使用 HTML + JavaScript 实现文章逐句高亮朗读功能

在这个信息爆炸的时代&#xff0c;我们每天都要面对大量的文字阅读。无论是学习、工作还是个人成长&#xff0c;阅读都扮演着至关重要的角色。然而&#xff0c;在快节奏的生活中&#xff0c;我们往往难以找到足够的安静时间专注于阅读。本文用 HTML JavaScript 实现了一个基于…...

一文带你入门Java Stream流,太强了,mysqldba面试题及答案

list.add(“世界加油”); list.add(“世界加油”); long count list.stream().distinct().count(); System.out.println(count); distinct() 方法是一个中间操作&#xff08;去重&#xff09;&#xff0c;它会返回一个新的流&#xff08;没有共同元素&#xff09;。 Stre…...

巴西医疗巨头尤迈Kafka数据泄露事件的全过程分析与AI安防策略分析

一、事件背景与主体信息 涉事主体:Unimed,全球最大医疗合作社,巴西医疗行业龙头企业,拥有约1500万客户。技术背景:泄露源于其未保护的Kafka实例(开源实时数据传输平台),用于客户与聊天机器人“Sara”及医生的实时通信。二、时间线梳理 时间节点关键事件描述2025年3月24…...

(nice!!!)(LeetCode每日一题)2434. 使用机器人打印字典序最小的字符串(贪心+栈)

题目&#xff1a;2434. 使用机器人打印字典序最小的字符串 思路&#xff1a;贪心栈&#xff0c;时间复杂度0(n)。 字符串t其实就是栈&#xff0c;后进先出。要让p的字典序最小&#xff0c;那当然是t每次弹出的字符&#xff0c;都小于或等于“剩下未入t里的字符串的字符”&#…...

计算机视觉与深度学习 | 基于MATLAB的图像特征提取与匹配算法总结

基于MATLAB的图像特征提取与匹配算法全面指南 图像特征提取与匹配 基于MATLAB的图像特征提取与匹配算法全面指南一、图像特征提取基础特征类型分类二、点特征提取算法1. Harris角点检测2. SIFT (尺度不变特征变换)3. SURF (加速鲁棒特征)4. FAST角点检测5. ORB (Oriented FAST …...