深入了解 Spring Boot 核心特性、注解和 Bean 作用域
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 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 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作用域非常重要,因为它可能会影响应用程序的行为和性能.
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
深入了解 Spring Boot 核心特性、注解和 Bean 作用域的更多相关文章
- 3个Spring Boot核心注解,你知道几个?
Spring Boot 核心注解讲解 Spring Boot 最大的特点是无需 XML 配置文件,能自动扫描包路径装载并注入对象,并能做到根据 classpath 下的 jar 包自动配置. 所以 S ...
- Spring Boot 核心注解与配置文件
@SpringBootApplication注解 Spring Boot项目有一个入口类 (*Application) 在这个类中有一个main 方法,是运行该项目的切入点.而@SpringBootA ...
- 【SpringBoot】15. Spring Boot核心注解
Spring Boot核心注解 1 @SpringBootApplication 代表是Spring Boot启动的类 2 @SpringBootConfiguration 通过bean对象来获取配置 ...
- Spring Boot 核心配置文件 bootstrap & application
Spring Boot 核心配置文件 bootstrap & application 1.SpringBoot bootstrap配置文件不生效问题 2.bootstrap/ applicat ...
- Spring Boot核心原理
Spring Boot核心原理 spring-boot-starter-xxx 方便开发和配置 1.没有depoy setup tomcat 2.xml文件里面的没有没有了 @SpringBootA ...
- spring boot @ConditionalOnxxx相关注解总结
Spring boot @ConditionalOnxxx相关注解总结 下面来介绍如何使用@Condition public class TestCondition implements Condit ...
- Spring boot 使用的注解有哪些?
Spring boot 使用的注解有哪些? 注解 作用 @SpringBootApplication 等价于 @Configuration + @EnableAutoConfiguration + @ ...
- (32)Spring Boot使用@SpringBootApplication注解,从零开始学Spring Boot
[来也匆匆,去也匆匆,在此留下您的脚印吧,转发点赞评论] 如果看了我之前的文章,这个节你就可以忽略了,这个是针对一些刚入门的选手存在的困惑进行写的一篇文章. 很多Spring Boot开发者总是使用 ...
- Spring Boot 二十个注解
Spring Boot 二十个注解 占据无力拥有的东西是一种悲哀. Cold on the outside passionate on the insede. 背景:Spring Boot 注解的强大 ...
- spring boot 中@Autowired注解无法自动注入的错误
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/huihuilovei/article/de ...
随机推荐
- 苹果工程师对iOS线程开发的那点事津津乐道
pthread,Thread总结 pthread: 通用的多线程API 使用方法 // 1. 创建线程: 定义一个pthread_t类型变量 pthread_t thread; // 2. 开启线程: ...
- Java HashMap 详解
HashMap HashMap 继承自 AbstractMap,实现了 Map 接口,基于哈希表实现,元素以键值对的方式存储,允许键和值为 null.因为 key 不允许重复,因此只能有一个键为 nu ...
- Centos下git pull免密码操作
在终端输入以下指令: git config --global credential.helper store然后再次执行pull操作,还是会提示一次输入帐号与密码.断开终端链接,重连,再次进行pull ...
- 【Azure App Service】通过Visual Studio部署Azure App Service 遇见 401 'Unauthorized'错误
问题描述 最近通过Visual Studio 2022部署Azure App Service的时候,突然遇见了部署失败, 401 Unauthorized错误. 错误消息: Build started ...
- vmware虚拟机出现此电脑无法运行win11,虚拟机中安装win11系统教程
一.点击新建虚拟机 二.选择自定义安装 三.默认 四.选择win11镜像 五.选择windows 六.命名 七.勾选安全引导 八.两个处理器即可 九.最低4G内存,接下来一直默认点下一步即可 十.创建 ...
- PetriCrode ---Code Genreation for Colored Petri Nets Annotated with Pragmatics
1. PetriCode lets users generate code from CPN models annotated with pragmatics ,PetriCode allows t ...
- 内存缓存 Gcache VS Caffeine源码详解
转一篇.后续再尝试自己实践一下
- dnsmasq 本地局域网DNS服务器搭建
项目背景 因为本地环境需要使用域名进行调试,需要DNS服务器 DNS 机器IP:192.168.5.249 dnsmasq 服务端部署 #01 关闭防火墙 systemctl stop firew ...
- Zabbix6.0使用教程 (三)—zabbix6.0的安装要求
接上篇,我们继续为大家详细介绍zabbix6.0的使用教程之zabbix6.0的安装部署.接下来我们将从zabbix部署要求到四种不同的安装方式逐一详细的为大家介绍.本篇讲的是部署zabbix6.0的 ...
- npm install 的执行顺序,和 安装包的源死磕
npm install 源的地址加载执行顺序 从近到远 lock文件 这里直接就记录了 包的下载地址 .npmrc 里面的内容 registry=http://registry.npm.xxxx.co ...