Spring Bean对象

本文介绍了Spring框架中Bean对象的基本配置方法,包括基于XML和注解的配置方式,并详细阐述了Bean对象的构建、作用域、生命周期及延迟加载机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Bean对象的基本配置

在软件应用中由Spring管理的所有的对象都称之为Bean,我们自己创建 的类假如需要由Spring管理,首先需要对这个类进行配置。
常用的配置方式:1.基于xml进行配置 2.基于注解进行配置
基于xml方式对Bean对象进行配置时,首先需要在Spring核心配置文件中使用bean标签对bean类型进行声明。借助id或name属性指定的bean的一个标示,通过class属性指定bean的具体类型(必须写全类名)
下面划线的部分就是

Bean对象的构建

1.直接通过构造方法

<bean id="hello" class="beans.HelloService" />

2.通过类的静态工厂方法创建对象(例如:Calendar的getInstance方法就是工厂方法)

<bean id="calendar" class="java.Calendar"
factory-method="getInstance"/>

注意:factory-method用于该类是抽象类时或不能直接创建对象时


3.通过实例的实例方法(例如通过Calendar对象的getTime方法获取Date对象)

<bean id="date" factory-bean="calendar" 
factory-method="getTime" />

说明:以上无论通过哪种方式构建对象,底层都会用到反射

Bean对象的作用域

在Spring容器中管理的Bean对象,可以在声明时通过scope属性或相关注解指定其作用域,最常用的是singleton,prototype。

singleton

这个作用域标识的对象具备全局唯一性,创建时只会创建一个对象
,不会重复创建新的对象。系统默认情况下时singleton标识

prototype

这个作用域标示的对象每次获取都会创建新的对象

思考:
1.Spring为什么要为Bean设置作用域(更好的管理内存)
2.假如没有Spring如何保证一个类的实例具备全局唯一性?(单例模式
3.单利模式如何实现,有哪些实现方式,这些实现方式有什么不同?

Bean对象的生命周期

在Spring框架应用中,所有的Bean对象都有生命周期,Bean对象的生命周期是指对象的创建,初始化,服务,销毁这个过程。可以通过Init-methos,destroy-metho的属性指定生命周期方法。
在Spring应用由Spring创建的对象是否是由spring销毁还得取决于作用域的配置。例如:
1.singleton作用域的对象可以在容器关闭时被销毁
2.prototype作用域的对象可以由容器创建对象,初始化对象,但不能销毁对象。

Bean对象的延迟加载

在spring中,容器默认初始化时会构建所有由spring管理的所有的bean对象。但假如这些对象长时间不使用还占用内存就会造成一定的资源浪费。为解决这个问题,Spring设计了延迟加载机制。通过这种机制来提高系统资源的使用。
Spring中的延迟加载需要使用bean元素中的lazy-init属性或beans中的default-lazy-init=“true”属性进行设置,二者的应用的不同点:
1.lazy-init:应用在bean标签中用于指定这个bean的加载策略
2.default-lazy-init:应用在beans标签中用于指定所有的bean的加载策略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值