有人可以概述或总结一下 Spring 框架上下文中 bean 的用途吗?
我了解标准的 Java bean(没有 arg 构造函数、getter/setter,通常是序列化的),但 Spring bean 的用途似乎有所不同。
它是一种以简单、可重用的方式实现单例设计模式(一个实例,例如工厂类)的方法吗?
我主要使用带有注释的 Spring ,但我觉得我需要掌握这一点才能理解 Spring。
谢谢!
有人可以概述或总结一下 Spring 框架上下文中 bean 的用途吗?
我了解标准的 Java bean(没有 arg 构造函数、getter/setter,通常是序列化的),但 Spring bean 的用途似乎有所不同。
它是一种以简单、可重用的方式实现单例设计模式(一个实例,例如工厂类)的方法吗?
我主要使用带有注释的 Spring ,但我觉得我需要掌握这一点才能理解 Spring。
谢谢!
Bean 是构成应用程序主干的对象。
bean只是一个由Spring IoC 容器实例化、组装和以其他方式管理的对象;除此之外,bean 没有什么特别之处。在所有其他方面,它可能是应用程序中的许多对象之一。
Spring bean 在 spring 配置文件中或通过使用注解定义,由 Spring 容器实例化,然后注入到您的应用程序中。
除非您明确地将 Spring bean 设为单例设计模式,否则它们不会成为单例设计模式。单例设计模式和spring 范围“单例”是不同的东西。您可以根据需要定义不同的 bean 范围。
范围可以是:
默认范围是单例。
我了解标准的 Java bean(没有 arg 构造函数、getter/setter,通常是序列化的),但 Spring bean 的用途似乎有所不同。
你的意思是总是序列化。为什么你认为目的似乎不同?
最后,你编写类。很多时候这些都是 POJO,Plain Old Java Objects。有时你实现一个接口或扩展一个类,但它都只是类。
bean 只是类。不要过于复杂。
现在 Spring 可能会采用您的 bean(类)并通过许多策略(原型、单例)中的任何一个为您管理它们,但这并不会改变 bean 是什么,它说明了 Spring 如何管理bean。
为了更好地理解,您应该熟悉依赖注入。简而言之,依赖注入允许您使用对象或服务而无需显式创建它们(当然,它提供了其他好处,但让我们关注这个问题)。这是通过维护一个依赖容器来实现的,该容器 - 粗略地说 - 一个 bean 的集合。
bean 是您在应用程序中使用的服务/组件。与 EJB 不同,使用 Spring 的 bean 不受构造函数参数或特定注释的约束(尤其是在使用 xml 上下文时)。您将 bean 注册到容器(通过定义上下文),当您需要它时,容器将为您提供该 bean 的实例。为了创建 bean,容器检查其类和构造函数,并使用该上下文中的任何其他注册 bean 来调用适当的构造函数或属性设置器。
您可以将 bean 配置为单例- 这不是设计模式术语中的单例。单例 bean在容器中创建一次,每当从该容器请求 bean 时,都会使用相同的实例。您还可以使用原型作用域强制容器每次创建一个新实例。