JavaEE简单示例——Bean的作用域

简单介绍:

之前我们介绍了有关Bean的实例化,我们在创建Bean的时候,还可以指定Bean的作用域。所谓作用域,就是指Bean示例的有效范围,作用域的范围有五种类型,其中比较常用的有两种,一种是单例模式(singleton)和原型模式(prototype),我们也组要围绕这两种模式来进行演示和说明。

使用方法:

在我们的Bean管理XML配置文件中,我们在<Bean>标签中添加一个新的元素scope用来指定使用何种的作用域,例如:

在Bean管理XML配置文件中添加这样的语句之后,我们就可以创建出一个单例模式的User类,当然,因为我们默认的就是单例模式,所以这个配置是多余的。

那么单例模式和原型模式有什么区别呢?

单例模式指的是我们多次创建的同一个对象其实是同一对象。很绕是吧,其实就是我们在创建对象的时候,如果我们多次创建同一对象之后,返回的都是同一个对象。这样的好处就是避免多次创建对象,节省资源,但是线程不安全。

原型模式,也可以叫多例模式,顾名思义啊,就是当我们多次创建同一对象的时候,返回多个不同的对象,如果不理解理论,可以待会在代码的实现中去结合代码理解。多例模式的好处就是他是线程安全的,一个人一个对象,不会出现干扰的情况,缺点就是需要多次创建对象,导致资源可能会占用的比较多。

代码实现:

首先我们来测试一下单例模式:

我们在测试类的IoC容器中获取多个User的对象:

 可以看到,我们获取了两个User的对象,那么根据之前我们说的,单例模式下,我们多次获取同一个类的对象返回的都是同一对象,那么直接让这两个对象相等,如果返回true就表示这两个类相等,也就是同一个对象,如果返回的是false,则表示不相等,现在运行来看结果:

返回的是true,那么就表示这是两个相同的对象,也就是说,在我们多次获取同一个对象的时候,IoC容器只会为我们创建一个对象,让我们重复使用。

接下来看多例模式:

 将scope的值改成prototype,就表示我们创建的类是多例模式,然后我们继续回到测试类进行代码的测试:

可以看到,这次我们输出了false,说明在多例模式下,我们多次从IoC容器中获取的同一个类的对象都是一个新的对象。

注意点:

在平时的使用中,这两种模式我们更推荐单例模式,因为这样比较节省资源,但是在有些时候,比如我们不能使用同一个对象进行业务的处理,比如多线程模式,或者其他的一些应用场景的时候,我们就要根据情况来决定使用多例模式还是单例模式。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值