当前位置: 首页 > 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; 其…...

Mysql 忘记密码怎么重置密码(详细步骤)

每种方法都有其适用的情况&#xff0c;根据具体情况选择合适的方法。无论选择哪种方法&#xff0c;请务必在重置密码后及时删除临时用户并重新启动 MySQL 服务。 一、使用 mysqladmin 重置密码 停止服务 # systemctl 启动的使用这个停止 $ sudo systemctl stop mysql# mac 本机…...

机器学习深度学习——图像分类数据集

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——softmax回归&#xff08;下&#xff09; &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习…...

【PWN · 栈迁移】[BUUCTF]ciscn_2019_es_2

第一道栈迁移题目&#xff0c;跌跌撞撞理解了 前言 当前溢出可用空间比较少时&#xff08;极端情况下仅能覆写ebp和ret&#xff09;&#xff0c;可以通过栈迁移的方式&#xff0c;扩大shellcode的容纳空间&#xff0c;其核心是将esp移动到一段shellocode开头。而esp总是由ebp赋…...

网络编程(13): 网络通信常用命令(后续待补充)

ifconfig 一般用于查看网卡信息 ping 一般用于侦测本机到目标网络主机的网络是否通常: ping ip/域名 telnet 可以用于指定ip地址和端口的侦听服务是否存在&#xff1a;telnet ip port, 也可以模拟客户端给服务器发数据 netstat 用于查看网络连接状态 -a: 显示所有选项 -t&#…...

flask创建数据库连接池

flask创建数据库连接池 在Python中&#xff0c;您可以使用 Flask-SQLAlchemy 这个扩展来创建一个数据库连接池。Flask-SQLAlchemy 是一个用于 Flask 框架的 SQLAlchemy 操作封装&#xff0c;实现了 ORM(Object Relational Mapper)。ORM 主要用于将类与数据库中的表建立映射关系…...

C语言手撕顺序表

目录 一、概念 1、静态顺序表&#xff1a;使用定长数组存储元素。 2、动态顺序表&#xff1a;使用动态开辟的数组存储 二、接口实现 1、对顺序表的初始化 2、对数据的销毁 3、对数据的打印 4、检查是否需要扩容 5、尾插 6、头插 7、尾删 8、头删 9、在pos位置插入x …...

常见的排序算法

常见的排序算法 常见的排序算法包括&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a;依次比较相邻的元素&#xff0c;将较大的元素交换到右侧&#xff0c;逐步将最大元素移动到末尾。插入排序&#xff08;Insertion Sort&#xff09;&#xff1a;将数组…...

C#如何使用SQLite数据库?

文章目录 0.引言1.SQLite工具准备2.创建窗体项目并添加SQLite的命名空间3.编写使用SQLite代码4.结果展示 0.引言 SQLite是一个轻量级的嵌入式数据库&#xff0c;它的库文件非常小巧&#xff0c;不需要独立的服务器进程或配置。这使得它非常适合在资源受限的环境中使用&#xff…...

如何将表格中的状态数据转换为Tag标签显示

考虑到系统前端页面的美观程度&#xff0c;通常通过Tag标签来代替某条数据中的状态信息。仅通过一点操作&#xff0c;便能够使得页面美观程度得到较大提升&#xff0c;前后对比如下所示。代码基于Vue以及Element-ui组件实现。 修改前&#xff1a; 修改后&#xff1a; 修改前…...

centos中修改防火墙端口开放配置

1、直接进入文件修改 vim /etc/sysconfig/iptables 2、添加需要开放的端口 &#xff08;1&#xff09;添加需要开放的单个端口 4001 -A INPUT -m state --state NEW -m tcp -p tcp --dport 4001 -j ACCEPT &#xff08;2&#xff09;添加需要开放的某个网段端口 4001:4020 …...

网络营销模式下品牌推广研究论文/谷歌网站优化

chage命令_Linux chage命令使用详解&#xff1a;修改帐号与密码的有效期限chage命令是用来修改帐号与密码的有效期限。语法&#xff1a;chage [选项] 用户名。选项&#xff1a;-m&#xff1a;密码可更改的最小天数。为零时代表任何时候都可以更改密码。-M&#xff1a;密码保持有…...

做招聘网站/深圳关键词推广排名

蓝桥杯国赛真题精选 ——Python 科目 题目 1 提示信息&#xff1a; 平方是一种运算&#xff0c;比如&#xff1a;a 的平方表示 aa。 例如:2 的平方为 4 (也就是 2*2 的积)例如:4 的平方为 16 (也就是 4*4 的积) 编程实现&#xff1a; 输入一个正整数n,将 1 到n 之间所有正整数(…...

分销pc网站/长沙seo管理

自动化始终只是辅助测试工作的一个手段&#xff0c;对于测试人员而言&#xff0c;测试基础和测试用例的设计才是核心。如果测试用例的覆盖率或者质量不高&#xff0c;那将这部分用例实现为自动化用例的意义也就不大了。 那么&#xff0c;接口测试用例应该怎么编写呢&#xff1f…...

用rp怎么做网站按钮下拉菜单/室内设计培训

介绍 QComboBox是常用的下拉列表框。 方法 方法描述addItem()添加一个下拉项addItems()从列表中添加下拉选项Clear()删除下拉选项集合中的所有选项count()返回下拉选项集合中的数量currentText()返回选中选项的文本itemText(i)获取索引为i的item的选项文本currentIndex()返回…...

网站初期建设该做什么/yandere搜索引擎入口

第一次写博文&#xff0c;有什么不足之处还请各位大神来谅解&#xff0c;多提意见&#xff0c;共同进步。我们的大老板有一个需求&#xff0c;他说&#xff0c;他的邮件有5G多&#xff0c;他中间换过两次电脑&#xff0c;他的邮件都在服务器上面&#xff0c;换电脑配置outlook都…...

个人简历免费制作网站/平台推广是什么

漏洞名称&#xff1a;WordPress中的BackupBuddy插件importbuddy.php脚本授权问题漏洞CNNVD编号&#xff1a;CNNVD-201304-014发布时间&#xff1a;2013-04-03更新时间&#xff1a;2013-04-03危害等级&#xff1a;高危 漏洞类型&#xff1a;授权问题威胁类型&#xff1a;远程CV…...