Spring Bean管理(bean简介,bean中主要属性,bean实例化)
程序员文章站
2022-05-21 22:39:25
...
Spring Bean管理(bean简介,bean中主要属性,bean实例化)
一,bean简介
Spring IOC容器管理一个或多个bean。
这些bean表示由IOC容器实例化,组装,管理的对象。
这些bean是Spring通过提供给IOC容器的配置信息(比如xml文件中的信息)来创建实例的。
二,bean中主要包含以下数据(属性)
class:包限定类名,通常是定义bean的实际实现类。
scope:bean行为配置元素,用于说明bean在容器中的行为(范围,生命周期和回调等)。
<!--
scope的值:
singleton(默认值):单例,在 Spring 容器中只存在一个 bean 实例,Spring启动时创建,关闭时销毁。
prototype:原型, getBean()的时候都会 new Bean() ,实例的生命周期与普通的Java实例生命周期相同。
request:每次 http 请求都会创建一个 bean, 仅用于 WebApplicationContext 环境 session:同一个 http session 共享一个 Bean, 不同 Session 使用不同的 Bean, 使用环境同上。
-->
bean的标识属性
id:bean在IOC容器中的标识符,唯一。
name:用于引入bean的其他别名,如果有多个,用逗号(,)分号(;)或空格分隔。
<!--bean命名规范:再命名bean时使用标准的Java规范,驼峰表示法。-->
不需要强制的为bean提供name或id。如果不显式地提供name或id,容器将为bean生成一个唯一的名称。但是,如果希望通过使用ref元素或服务定位器风格来查找该bean,则必须提供一个名称。不提供名称仅用在使用内部bean和自动装配协作者的情况。
在bean的定义外使用别名
只在bean实际定义的地方指定所有别名并不够用,有时需要为在别处定义的bean引入别名。
<alias name = "fromName" alias = "toName"/>
在这种情况下,名为fromName的bean(在同一容器中),在使用这个别名定义之后,也可以称为toName。
三,Bean实例化(即IOC的过程)
Spring启动伴随着bean对象的创建,当需要创建bean时,IOC会使用由该bean定义封装的信息数据来创建/获取bean对象。
如果使用基于XML的配置信息获取对象,则需要指定bean元素的class属性中实例化的对象的类名。
多数情况下:在容器中直接创建bean,通过调用bean的构造方法来创建bean的实例,相当于Java中的new.
少数情况下:容器调用类上的静态工厂方法来创建bean。需要指定包含调用创建对象的静态工厂方法的实际类,静态工厂方法调用返回的对象类型可以是同一个类或完全是另一个类。
这两种方式的具体实现会在以后的博客中详解,觉得有帮助的朋友可以点个赞支持一下。