首页 > 其他分享 >深入了解 Spring Boot 核心特性、注解和 Bean 作用域

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

时间:2023-12-25 18:32:24浏览次数:32  
标签:容器 作用域 Spring 配置 Boot 应用程序 Bean IoC

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,IoC
From: https://blog.51cto.com/xiaowange/8970982

相关文章

  • 启动springboot的测试类,报红:Java HotSpot(TM) 64-Bit Server VM warning: Sharing is
    启动springboot的测试类时,报红:JavaHotSpot(TM)64-BitServerVMwarning:Sharingisonlysupportedforbootloaderclassesbecausebootstrapclasspathhasbeenappended原因:JavaHotSpot(TM)64位服务器虚拟机已附加引导程序类路径解决办法:IDEA—》Settings—》Build......
  • spring boot启动速度提升技巧
    1、启用SpringBoot的快速启动模式在SpringBoot2.3及更高版本中,引入了快速启动模式,它可以明显减少应用程序的启动时间。可以在application.properties文件中添加以下配置来启用快速启动模式:spring.main.lazy-initialization=true这样可以延迟初始化非必需的bean,加快启动速度......
  • 深度剖析 Spring 框架在 Java 应用开发中的优势与应用
    Spring是用于企业Java应用程序开发的最流行的应用程序开发框架。全球数百万开发人员使用SpringFramework创建高性能、易于测试和可重用的代码。SpringFramework是一个开源的Java平台。它最初由RodJohnson编写,并于2003年6月在Apache2.0许可下首次发布。为什......
  • SpringBoot多级缓存
    SpringBoot实现项目更删改查后,会有新的问题需要解决,就是并发大的问题,一般而言,解决查询并发大的问题,常见的手段是为查询接口增加缓存,从而可以减轻持久层的压力。按照我们以往的经验,在查询接口中增加Redis缓存即可,将查询的结果数据存储到Redis中,执行查询时首先从Redis中命中,如果命中......
  • [转]Spring Security 中默认使用的 BCryptPasswordEncoder 密码加盐
    原文地址:SpringSecurityBCryptPasswordEncoder密码加盐_bcryptpasswordencoder加盐-CSDN博客引入spring-boot-starter-security的Jar包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security......
  • SpringBoot 这么实现动态数据源切换,就很丝滑!
    大家好,我是小富~简介项目开发中经常会遇到多数据源同时使用的场景,比如冷热数据的查询等情况,我们可以使用类似现成的工具包来解决问题,但在多数据源的使用中通常伴随着定制化的业务,所以一般的公司还是会自行实现多数据源切换的功能,接下来一起使用实现自定义注解的形式来实现一下。......
  • Springboot实现发送邮件功能
    相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送,在SpringBoot的Starter模块中也为此提供了自动化配置。下面通过实例来讲解如何在SpringBoot中使用JavaMailSender发送邮件。目录一、前言1.基础知识2.传输协议3.进阶知识二、实......
  • 基于SpringBoot的人才招聘网站
    项目源码获取方式放在文章末尾处项目技术数据库:Mysql5.7或8.0数据表:16张开发语言:Java(jdk1.8)开发工具:idea前端技术:layui后端技术:springboot附文档 功能简介项目获取关键字:招聘该项目是一个人才招聘网站,页面分为前台招聘页和后台管理,具体功能菜单如下:前台首页    求职者   ......
  • 基于SpringBoot的人事管理系统
    项目源码获取方式放在文章末尾处项目技术数据库:Mysql5.7或8.0数据表:11张开发语言:Java(jdk1.8)开发工具:idea前端技术:html后端技术:springboot 功能简介项目获取关键字:人事该项目是一个人事管理系统,角色分为管理员和员工,具体功能菜单如下:管理员端    主页    员工管理   ......
  • Spring 自带的常用工具包
    在SpringFramework里的spring-core包里面,有个org.springframework.util里面;另一个工具包是commons-lang3参考:https://mp.weixin.qq.com/s/ZalSIQMRXJ0edhJUaw7oxw                 ......