我是Spring的初学者,目前还不太明白Bean是什么。从它的定义来看,它似乎是一个由一些预先设置的配置文件或在类上使用注释来确定的对象。一旦 spring 启动,bean 就被创建了。但是Spring可以使用DI来创建一些属性没有预先确定的实例吗?(比如,用户从网站向Spring发布一个json。这个json包含一些用于新实例的数据。Spring可以使用这个json吗?使用 DI 创建实例?)
Bean 只是您的 Spring 应用程序创建的对象。如您所知,任何 Spring 应用程序都有多个交互对象一起工作,以产生所需的编程行为。
Bean 基本上是一个托管对象,即在运行时,IOC 容器根据编码器提供的定义或 beans 标签下的 apllicationContext.xml 文件中的配置创建 bean 对象,并根据需要将其注入到其他类。
任何 Spring 应用程序基本上都是相互交互的各种对象的集合,这些对象或 bean 协作创建应用程序。
Bean 的生命周期由 Spring IOC 容器管理。
Spring 应用程序使用的 JSON 由 HttpMessageConverter 处理。当收到新请求时,Spring 框架将使用 content-type 标头来确定请求的媒体类型。 然后,它将尝试在应用程序的类路径中找到相应的转换器,以转换请求正文。
因此很明显,传入的请求主体对象不是由 Spring IOC 容器管理的,因此不是 Bean。
但是这些反序列化的实例在 Spring 应用程序的各个层(如服务、DAO、控制器)中用作数据传输对象。
Spring bean 是组成应用程序并由 Spring 框架管理的对象。将它们与 JavaBean 和 POJO 的概念进行比较提供了一些解释性的上下文,并且 Spring 参考文档包含了 Spring beans 的大量文档,包括以下摘要:
bean 定义本质上是创建一个或多个 对象。容器在以下情况下查看指定 bean 的配方: 询问,并使用该 bean 封装的配置元数据 创建(或获取)实际对象的定义。
参考文档中还包括通过基于 xml 或基于注释配置方法以及Java Config方法(也使用注释)实例化 bean 的各种方法的描述。这是由 Spring BeanFactory 接口管理的(API here;源代码 here)。
@Bean注解用于指示实例化一个方法, 配置并初始化一个由 Spring 管理的新对象 国际奥委会容器。对于熟悉 Spring XML 的人 配置中@Bean注解的作用与 元素。您可以将 @Bean 注解的方法与任何 Spring 一起使用 @Component,然而,它们最常与@Configuration一起使用 豆类。
您在问题中提到了依赖注入(DI),这是一种基于控制反转原则的设计模式,它是 Spring 框架的关键部分,特别是对于 bean 实例化而言。 DI 允许将值从外部传递到对象中。 Spring 文档描述了 Spring IoC 容器提供的用于实例化对象(bean)的基于构造函数和基于设置器的 DI 方法。
要通过示例了解 Spring Bean,您可以查看此链接。 https://medium.com/shoutloudz/what-is-spring-bean-c971d13826bc