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

2024-01-02 22:41:21

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作用域非常重要,因为它可能会影响应用程序的行为和性能。

文章来源:https://blog.csdn.net/qq_37726813/article/details/135350810
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。