Spring Boot核心特性、注解和Bean作用域
Spring Boot
是基于 Spring Framework
构建应用程序的框架,Spring Framework
是一个广泛使用的用于构建基于 Java
的企业应用程序的开源框架。Spring Boot
旨在使创建独立的、生产级别的 Spring
应用程序变得容易,您可以"只是运行"这些应用程序。
1. 术语
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
,提供了一种方便的方式来并发运行任务,在计划的基础上或异步运行。
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
框架,使用 IoC
和 DI
提供更灵活,模块化的软件开发方法。 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-Controller
(MVC
)设计模式之上,有助于将应用程序的关注点分为三个不同的组件:模型、视图和控制器。
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
:这个作用域是用于全局应用程序级别的数据,只在支持Web
的Spring ApplicationContext
中有效。websocket
:这个作用域是用于全局WebSocket
级别的数据,也只在支持Web
的Spring ApplicationContext
中有效。
可以使用Bean
元素的scope
属性在配置文件中指定Bean
的作用域。
选择正确的Bean
作用域非常重要,因为它可能会影响应用程序的行为和性能。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!