Spring(2)之bean实例化与bean标签常用属性

Spring(1)之 ioc底层原理中我简单了解sping框架,知道了spring控制反转的底层原理,知道控制反转(ioc)是通过配置文件方式来创建类的,因为有一个bean标签。我们现在就来仔细了解了解这个bean标签。


bean实例化三种方式

  1. 使用类的无参构造函数创建
//配置文件中
<bean id="user" class=“cn.bubbetg.ioc.User”></bean>

//对象
public class User{

//无参构造函数,默认
........
}

我们试试有参:

//当有参构造函数时

public class User{
	private String username;
	
	//有参构造函数
	public User(String username){
	this.username = username;
	}

}

结果报错了(原因是因为写了有参构造函数而没有无参构造函数了):
在这里插入图片描述

  1. 使用静态工厂创建
//使用静态工厂
public class BeanFactory{
 //创建静态方法,返回对象
 public static Bean getBean(){
 
 	return new Bean();
 }
}

//xml中配置
<bean id="bean" cass ="cn.bubbetg.bean.BeanFactory" factory-method="getBean"></bean>

  1. 使用实例工厂创建
// 此方法与静态工厂创建类似,只不过方法不是静态的了

public class BeanFactory{

 //创建非静态方法,返回对象
 public Bean getBean(){
 	return new Bean();
 }
}

//xml中配置
<bean id="BeanFactory" cass ="cn.bubbetg.bean.BeanFactory" ></bean>
<bean id="bean" factory-bean="BeanFactory" factory-method="getBean"></bean>

可以发现,使用无参构成方法创建比较简单,重点知道。


bean标签中常用属性

通过前面例子我们也大概猜到了一些属性的特点含义了。

id属性

起一个名称,任意命名。不能包含特殊符号。

class属性

创建的对象所在类的全路径

name属性

功能和id一样,id不能包含特色符号,这个可以。

scope属性

有多个属性值:

  • singleton
    默认值,单例
  • prototype
    多例
  • request
    web项目中,Spring创建一个Bean的对象,将对象存入request中
  • session
    web项目中,Spring创建一个Bean的对象,将对象存入session中
  • globalSession
    web项目中,应用在Porlet环境中,若没有,相当于session。

在scope属性中讲到单例,多例,那么是单例,什么是多例呢??
看下面代码:
在这里插入图片描述
打印结果如下:
在这里插入图片描述
我们发现,地址相同,这就是单例模式。

当我们在xml配置文件中修改bean标签的scope属性:

<bean id="user" class=“cn.bubbetg.ioc.User” scope="prototype"></bean>

再看打印结果:
在这里插入图片描述
地址变了,也就是有多个实例 。

好了,最后打一波小广告:

我的微信公众号:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值