Spring Boot核心特性、注解和Bean作用域

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

1. 术语

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

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

2. 架构

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

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

3. 为什么选 Spring Boot?

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

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

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

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

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

4. 配置

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

5. 依赖注入

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

6. Spring IOC

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

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

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

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

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

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

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

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

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

7. Sprint AOP

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

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

8. Spring MVC

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

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

9. 注解

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

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

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

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

10. 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:这个作用域是用于全局应用程序级别的数据,只在支持WebSpring ApplicationContext中有效。
  • websocket:这个作用域是用于全局WebSocket级别的数据,也只在支持WebSpring ApplicationContext中有效。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/591870.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编程笔记 html5cssjs 016 HTML表格

编程笔记 html5&css&js 016 HTML表格 一、HTML 表格二、HTML 表格标签三、边框属性四、单元格合并小结 表格是一种常用的文档格式。学习或办公过程中也常常使用表格。有专用的电子表格软件,如EXCEL、WPS表格等。表格也经常与文字混合在文章中使用。网页中也…

openssl 命令详解

openssl genrsa 命令产生私钥 openssl genrsa 命令是会用来生成 RSA 私有秘钥,不会生成公钥,因为公钥提取自私钥。生成时是可以指定私钥长度和密码保护。 如果需要查看公钥或生成公钥,可以使用 openssl rsa 命令。 命令语法: ope…

Python学习笔记(四)流程控制方法

流程控制有三种方法:分支、循环、跳出 流程的控制通过布尔值来实现,分支和循环都需要对一定的条件进行判断,根据判断结果(布尔值)决定下一步要做什么 布尔值通过比较运算符、逻辑运算符来进行判断是True还是False 不…

Vue3全局属性app.config.globalProperties

文章目录 一、概念二、实践2.1、定义2.2、使用 三、最后 一、概念 一个用于注册能够被应用内所有组件实例访问到的全局属性的对象。点击【前往】访问官网 二、实践 2.1、定义 在main.ts文件中设置app.config.globalPropertie import {createApp} from vue import ElementPl…

python中使用socket服务发送接收图像

python中使用socket服务发送接收图像的代码,可在服务器端中插入模型推理代码进行推理返回结果。 服务器端 # -*-coding:utf-8-*- import os.path import socket import structdef deal_image(sock, addr):print(connection, addr)while True:# 计算文件信息大小fil…

会声会影2023渲染闪退怎么办

​ 会声会影2023是一款功能强大,操作简单的视频剪辑软件。在使用会声会影剪辑视频后,我们要对视频进行渲染,有时会出现渲染到一半闪退,或是帧不可读的问题,那么遇到这些情况我们该怎么办呢?下面将为大家介绍…

基于Django/springboot的个性化电影推荐系统设计与实现-协同过滤技术

项目设计目的: 本项目旨在开发一个基于Django框架的协同过滤电影推荐系统,通过分析用户的历史行为和喜好,为用户提供个性化的电影推荐。通过该系统,用户可以发现新的电影作品,提高用户对电影的满意度和粘性。 功能需求…

ssm基于冲突动态监测算法的健身房预约系统的设计与实现论文

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装健身房预约系统软件来发挥其高效地信息处理的作用&#xff…

攻防世界easyphp解题

攻防世界easyphp解题 <?php highlight_file(__FILE__); $key1 0; $key2 0;$a $_GET[a]; $b $_GET[b];if(isset($a) && intval($a) > 6000000 && strlen($a) < 3){if(isset($b) && 8b184b substr(md5($b),-6,6)){$key1 1;}else{die(&q…

PAT 乙级 1043 输出PATest

解题思路&#xff1a;对于c来说hash函数求出各个符号的数量&#xff0c;不为0时就输出即可&#xff0c;python利用字符串count函数就可以了。 c语言代码如下: #include<stdio.h> int output_c(char c,int *count) {if(*count!0){putchar(c);(*count)--;}return 1; } int…

Jenkins基础教程

目录 第一章、快速了解Jenkins1.1&#xff09;Jenkins中一些概念介绍1.2&#xff09;Jenkins和maven用途上的区别1.3&#xff09;为什么使用Jenkins1.4&#xff09;学习过程中的疑问 第二章、安装Jenkins2.1&#xff09;安装之前的准备2.2&#xff09;Windows中Jenkins下载安装…

出版实务 | 校对

文章目录 校对校对工作校异同与校是非校样的方式和种类毛校样初校样二校样三校样付印样付印清样 校对人员 校对的方法对校法读校本校法他校法理校法 校对的工序毛校初校二校三校通读核红誊样文字技术整理对片 校对的制度 校对 校对工作 校对工作是文字性、知识性的创造性劳动…

面向对象(类和对象,对象内存图,成员变量和局部变量,封装,构造方法)

1. 类和对象 1.1 类和对象的理解 客观存在的事物皆为对象 &#xff0c;所以我们也常常说万物皆对象。 类 类的理解 类是对现实生活中一类具有共同属性和行为的事物的抽象类是对象的数据类型&#xff0c;类是具有相同属性和行为的一组对象的集合简单理解&#xff1a;类就是对…

2走近chatGPT 走向AGI 机器学习 chatGPT研发过程主要步骤 收到一个问题后的处理步骤

目标&#xff1a;走向AGI 我们不想写代码了&#xff0c;想让机器能自己&#xff08;输入&#xff09;听到、看到、摸到、闻到、理解并&#xff08;输出&#xff09;做到、说出来、画出来、表现出来&#xff0c;适应新东西完成复杂的任务不再需要人类干预&#xff0c;这就是AGI…

计算机网络(1)

计算机网络&#xff08;1&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 计算机网络和因特网&#xff08;1&#xff09;因特网概念解读服务常见的服务 协议网络边缘特点强调 网络核心特点强调 小程一言 我的计算机网络专栏&#xff0c;是自己在计算机网络…

Python模拟技巧实现自动抽屉登录和自动点赞

目录 一、引言 二、准备工作 三、自动抽屉登录 四、自动点赞 五、注意事项 六、案例分析 七、总结 一、引言 随着互联网的普及&#xff0c;人们越来越依赖于各种在线平台进行社交互动和信息获取。在这些平台上&#xff0c;用户需要登录才能享受各种服务&#xff0c;同时…

【DevOps】搭建 项目管理软件 禅道

文章目录 1、简介2、环境要求3、搭建部署环境3.1. 安装Apache服务3.2. 安装PHP环境&#xff08;以php7.0为例 &#xff09;3.3. 安装MySQL服务 4、搭建禅道4.1、下载解压4.2、 配置4.2.1、 启动4.2.2、自启动4.2.3、确认是否开机启动 5、成功安装 1、简介 禅道是国产开源项目管…

Halcon底帽运算bottom_hat

Halcon底帽运算 底帽运算的原理是用原始的二值图像减去闭运算的图像。闭运算的目的是对某些局部区域进行“填补”&#xff0c;如填空洞、使分离的边缘相连接等。而底帽运算正是用来提取这些用于填补的区域的。图&#xff08;a&#xff09;为从二值图像中提取出的亮的区域&…

解决 Nginx 反向代理中的 DNS 解析问题:从挑战到突破20231228

引言 在使用 Nginx 作为反向代理服务器时&#xff0c;我们可能会遇到各种配置和网络问题。最近&#xff0c;我遇到了一个有趣的挑战&#xff1a;Nginx 在反向代理配置中无法解析特定的域名&#xff0c;导致 502 错误。这个问题的解决过程不仅揭示了 Nginx 的一个不太为人知的功…

目标检测-One Stage-SSD

文章目录 前言一、SSD的网络结构和流程二、SSD的创新点总结 前言 根据前文目标检测-One Stage-YOLOv1可以看出YOLOv1的主要缺点是&#xff1a; 每个格子针对目标框的回归是不加限制的&#xff0c;导致目标的定位并不是很精准和Faster RCNN等先进Two Stage算法相比&#xff0c…