春豆到底是什么?

2022-08-31 04:26:23

我还没有找到一个我能理解的春豆的高级定义。我看到它们在Grails文档和书籍中经常被引用,但我认为理解它们是什么将是有益的。那么什么是春豆呢?如何使用它们?它们与依赖注入有关吗?


答案 1

Spring核心技术参考文档描述了什么是豆子。

根据 Spring IoC 容器和 Bean 部分的简介(其中“IoC”表示“控制反转”):

在 Spring 中,构成应用程序主干并由 Spring IoC 容器管理的对象称为 Bean。Bean 是由 Spring IoC 容器实例化、组装和管理的对象。否则,Bean 只是应用程序中众多对象之一。Bean 以及它们之间的依赖关系反映在容器使用的配置元数据中。

Bean 和作用域在 Bean 作用域部分中进行了描述:

创建 Bean 定义时,将创建用于创建由该 Bean 定义定义的类的实际实例的配方。Bean 定义是配方的想法很重要,因为这意味着,与类一样,您可以从单个配方创建多个对象实例。

您不仅可以控制要插入到从特定 Bean 定义创建的对象中的各种依赖项和配置值,还可以控制从特定 Bean 定义创建的对象的作用域。这种方法功能强大且灵活,因为您可以选择通过配置创建的对象的作用域,而不必在 Java 类级别烘焙对象的作用域。可以将 Bean 定义为部署在多个作用域之一中。


答案 2

Spring Bean只是由Spring容器管理的实例对象,也就是说,它们由框架创建和连接,并放入“对象袋”(容器)中,以便以后可以从中获取它们。

“连接”部分就是依赖注入的全部内容,这意味着你可以说“我需要这个东西”,框架将遵循一些规则来为你提供正确的实例。

对于不习惯Spring的人来说,我认为Wikipedia Spring的文章有一个很好的描述

Spring框架的核心是它的控制容器反转,它提供了一种使用反射配置和管理Java对象的一致方法。容器负责管理特定对象的对象生命周期:创建这些对象,调用它们的初始化方法,以及通过将对象连接在一起来配置这些对象。

容器创建的对象也称为托管对象Bean。可以通过加载 XML 文件或检测配置类上的特定 Java 注释来配置容器。这些数据源包含 Bean 定义,这些定义提供了创建 Bean 所需的信息。

可以通过依赖关系查找或依赖关系注入来获取对象。依赖关系查找是一种模式,其中调用方向容器对象请求具有特定名称或特定类型的对象。依赖关系注入是一种模式,其中容器通过构造函数、属性或工厂方法按名称将对象传递给其他对象。


推荐