Spring框架之Bean

Bean:憨豆先生

一、Bean是个啥

Bean,第一次看到它时,我一下就认出来了,憨豆先生!Mr. Bean,然鹅并不是这个意思,我之前遇到许多人,包括我自己总是有一个想法,一定要把某个单词翻译成中文才取理解它到底代表什么意思,最近我才发现,何必呢?莫非你以为翻译成中文你就能理解了?举个栗子:在线性代数中有个概念叫做“Rank”翻译过来就是“秩”,然鹅翻译成中文后对你的理解有任何帮助吗?秩!反倒是rank好些,最起码知道它有排序的意思。

废话不多说,那么bean到底是什么呢?我在一本书看到的一段话我觉得特别好
在这里插入图片描述

二、Bean属性

1.id和name
<bean id = ""  ></bean>
id : 作为这个bean的唯一标识符,能使用特殊字符,字母开头,同一配置文件中不能重复
<bean name = ""  ></bean>
name : 可以使用特殊字符,同一个bean可以有多个name 
例如 name = ”bean1,bean2,bean3...“,

两者共同点:
i. 同一配置文件中都不可以重复,不同配置文件中可以重复,但如果有重名会覆盖
ii.都起到标识bean的作用
iii. 如果id和name都没有,默认使用当前类的全类名作为标识,可以使用全类名调用,如下

User u = (User)ac.getBean("com.test.entity.User");
2. scope属性
属性名范围
singleton默认,单例。在整个容器里面bean只生成一个实例
prototype多例的。每次getBean()都会产生一个新的实例
requestSpring创建bean对象存到request域中,一次http请求中,bean只有一个实例
sessionSpring创建bean对象存到session域中
global Session应仅在使用portlet context的时候有效.如果没有 Porlet 环境那么 globalSession 相当 于 session.
3. 生命周期

init-method 初始化的时候执行的方法,
destroy-method 销毁的时候执行的方法。
:销毁方法想要成功调用需要在单例范围中。

三、三种创建Bean方式

i.无参构造函数
<bean id="user" class="com.itheima.entity.User"></bean> 

最常用的方式
要求该Bean类提供无参数的构造器。
会对Bean实例的所有属性进行初始化

ii.静态工厂
//这是一个user工厂
public class UserFactory{
	public  static User produce(){
		return new User();
	} 
}
--------------------------------------------
//这是配置文件
<bean id = "user" class = "com.test.demo.UserFactory" factory-method = "produce"> </bean>

class属性也必须指定为静态工厂类
使用factory-method属性来指定静态工厂方法

iii.实例工厂
//这还是一个工厂类
public class UserFactory{
	public User produce(){
		return new User();
	} 
}
//下面还是一个xml配置文件
---------------------------------------
<bean id="userFactory" class="com.test.demo.UserFactory"></bean> 
<bean id="user2" factory-bean="userFactory" factory-method="produce"></bean

实例工厂方法与静态工厂方法只有一个不同:
静态工厂方法只需工厂类即可,而实例工厂方法需要工厂类的实例。

factory-bean: 该属性的值为工厂Bean的id。
factory-method: 该属性指定实例工厂的工厂方法。

Bean完毕,喝杯茶歇歇。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级鸭脖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值