Spring Boot 是什么?

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

术语

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

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

架构

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 框架,使用 IoCDI 提供更灵活,模块化的软件开发方法。 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-ControllerMVC)设计模式之上,有助于将应用程序的关注点分为三个不同的组件:模型、视图和控制器。

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 作用域的更多相关文章

  1. 3个Spring Boot核心注解,你知道几个?

    Spring Boot 核心注解讲解 Spring Boot 最大的特点是无需 XML 配置文件,能自动扫描包路径装载并注入对象,并能做到根据 classpath 下的 jar 包自动配置. 所以 S ...

  2. Spring Boot 核心注解与配置文件

    @SpringBootApplication注解 Spring Boot项目有一个入口类 (*Application) 在这个类中有一个main 方法,是运行该项目的切入点.而@SpringBootA ...

  3. 【SpringBoot】15. Spring Boot核心注解

    Spring Boot核心注解 1 @SpringBootApplication 代表是Spring Boot启动的类 2 @SpringBootConfiguration 通过bean对象来获取配置 ...

  4. Spring Boot 核心配置文件 bootstrap & application

    Spring Boot 核心配置文件 bootstrap & application 1.SpringBoot bootstrap配置文件不生效问题 2.bootstrap/ applicat ...

  5. Spring Boot核心原理

    Spring Boot核心原理 spring-boot-starter-xxx  方便开发和配置 1.没有depoy setup tomcat 2.xml文件里面的没有没有了 @SpringBootA ...

  6. spring boot @ConditionalOnxxx相关注解总结

    Spring boot @ConditionalOnxxx相关注解总结 下面来介绍如何使用@Condition public class TestCondition implements Condit ...

  7. Spring boot 使用的注解有哪些?

    Spring boot 使用的注解有哪些? 注解 作用 @SpringBootApplication 等价于 @Configuration + @EnableAutoConfiguration + @ ...

  8. (32)Spring Boot使用@SpringBootApplication注解,从零开始学Spring Boot

    [来也匆匆,去也匆匆,在此留下您的脚印吧,转发点赞评论] 如果看了我之前的文章,这个节你就可以忽略了,这个是针对一些刚入门的选手存在的困惑进行写的一篇文章. 很多Spring Boot开发者总是使用 ...

  9. Spring Boot 二十个注解

    Spring Boot 二十个注解 占据无力拥有的东西是一种悲哀. Cold on the outside passionate on the insede. 背景:Spring Boot 注解的强大 ...

  10. spring boot 中@Autowired注解无法自动注入的错误

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/huihuilovei/article/de ...

随机推荐

  1. 基于java的学生信息管理系统

    开发说明:使用数组集合存储临时数据,实现学生信息管理系统,实现的功能有管理员的注册.登陆.增加学生信息.删除学生信息.查询学生信息.修改学生信息.学生信息列表 登陆注册界面 系统首页界面 增加 删除 ...

  2. 第125篇: 期约Promise基本特性

    好家伙,本篇为<JS高级程序设计>第十章"期约与异步函数"学习笔记 1.非重入期约 1.1.可重入代码(百度百科) 先来了解一个概念 可重入代码(Reentry cod ...

  3. 【Azure 环境】自动化账号生成的时候怎么生成连接与证书

    问题描述 自动化账号生成的时候怎么生成连接与证书? 什么是自动化? Azure 自动化提供基于云的自动化和配置服务,用于支持 Azure 环境和非 Azure 环境之间的一致管理. Azure 自动化 ...

  4. 【Azure Redis 缓存】VM 里的 Redis 能直接迁移到 Azure Cache for Redis ? 需要改动代码吗?

    问题描述 原来部署在VM 里的 Redis 能直接迁移到 Azure Cache for Redis? 需要改动代码吗? 问题解答 以上问题需要从两个方面来解答. 第一:VM中Redis的数据转移到 ...

  5. Java 线程通信 例子:使用俩个线程打印1-100.线程1 线程2 交替打印

    1 package bytezero.threadcommunication; 2 3 /** 4 * 线程通信的例子:使用俩个线程打印1-100.线程1 线程2 交替打印 5 * 6 * 涉及到的三 ...

  6. SQL之基本查询

    提纲 记录查询 使用列别名 查询语句执行顺序 数据分页 子句执行顺序 结果集排序 PS: 排序注意 多个排序字段 子句执行顺序 结果集去除重复数据 注意: 条件查询 比较运算符 注意 子句执行顺序

  7. php的php-fpm

    FastCgi与PHP-fpm到底是个什么样的关系 昨晚有一位某知名在线教育的大佬问了我一个问题,你知道php-fpm和cgi之间的关系吗?作为了一个5年的phper了,这个还不是很简单的问题,然后我 ...

  8. day18--Java集合01

    Java集合01 1.什么是集合? 前面我们保存数据使用的是数组,数组有不足的地方,我们来分析一下: 长度开始时必须指定,而且一但指定不能更改 保存的必须是同一类型的元素 使用数组进行增加/删除元素的 ...

  9. 逆向通达信Level-2 续三 (KTL python控制台动态调试)

    python控制台逆向分析. python 跟 js 自如切换 逆向通达信Level-2 续十一 (无帐号登陆itrend研究版) 逆向通达信Level-2 续十 (trace脱壳) 逆向通达信Lev ...

  10. .NET Aspire Preview 4 发布!

    .NET Aspire是一个有态度的云原生应用开发框架,旨在改善生成.NET云原生应用的体验,并提供一组强大的工具来帮助你生成和运行分布式应用.它允许开发者快速创建属于自己的云原生应用,或改造已有的项 ...