我是Spring的初学者,我仍然无法清楚地知道Bean是什么。从它的定义来看,它似乎是一个由一些预先设置的配置文件或在类上使用注释确定的对象。一旦弹簧启动,就会创建bean。但是Spring可以使用DI创建一些属性未预先确定的实例吗?(比如,用户将json从网站发布到Spring。而这个json包含一些用于新实例的数据。可以Spring使用这个json使用DI创建实例?)
答案 0 :(得分:3)
Bean只是spring应用程序创建的对象。如您所知,任何弹簧应用程序都有多个相互作用的对象协同工作,以产生所需的编程行为。
Bean基本上是一个托管对象,即在运行时,IOC容器根据编码器提供的定义或bean标签下的apllicationContext.xml文件中的配置创建bean对象,并根据需要将其注入其他类
任何Spring应用程序基本上都是各种对象相互交互的集合体,这些对象或bean协作创建应用程序。
Bean的生命周期由Spring IOC容器管理。
Spring应用程序使用的JSON由HttpMessageConverter处理。收到新请求时,Spring框架将使用 内容类型 标头来确定请求的媒体类型。 然后,它将尝试在应用程序的类路径中找到相应的转换器,以转换请求体。
因此很明显,传入的请求体对象不是由Spring IOC容器管理的,因此不是Bean。
但是这些反序列化的实例在Spring应用程序的各个层(如服务,DAO,控制器)中用作数据传输对象。
答案 1 :(得分:1)
Spring bean是构成应用程序的对象,由Spring框架管理。将它们与JavaBeans和POJO的概念进行比较提供了一些解释性context,而Spring reference documentation包含了大量的Spring bean文档,包括以下摘要:
bean定义本质上是创建一个或多个的配方 对象。容器在查看命名bean的配方时 问,并使用该bean封装的配置元数据 创建(或获取)实际对象的定义。
参考文档中还包括通过xml-based或annotation-based配置方法以及Java Config方法(也使用注释)实例化bean的各种方法的说明。这由Spring BeanFactory接口(API here;源here)管理。
@Bean注释用于指示方法实例化, 配置并初始化一个由Spring管理的新对象 IoC容器。对于那些熟悉Spring的XML的人 配置@Bean注释扮演与角色相同的角色 元件。你可以在任何Spring中使用@Bean注释方法 但是,@ Component,它们最常用于@Configuration 豆。
您在问题中提到了依赖注入(DI),这是一种基于控制反转原理的设计模式,它是Spring Framework的一个关键部分,特别是对于bean实例化。 DI允许值从外部传递到对象。 Spring文档描述了Spring IoC容器提供的用于实例化对象(bean)的constructor-based和setter-based方法。