Spring的IOC容器简单介绍之二(Bean对象的作用范围)

之前我们介绍了控制反转的基本概念和用途,并且还举例工厂模式解耦来说明IOC的原理。接下来我们来讨论一下IOC容器中Bean对象的一些细节问题

Bean对象其实说白了就是一个可以重用的组件,以前我一直觉得只有实体类才能被称为Bean对象,后来发现其实Bean对象的范围远远大于实体类。举个例子,在我们Java经典的三层架构中,控制层调用业务层,业务层又调用数据访问层。而有时一个业务层(Service)不仅仅被一个控制层(Servlet)调用,同理一个数据访问层(Dao)不仅仅被一个业务层(Service)调用。这个时候我们的业务层和数据访问层经常会被重用,所以它们两也是Bean对象,而JavaBean对象则是用Java语言编写的Bean对象。

如果一个业务层被多个控制层所调用,那么从程序性能上讲,采用单例设计模式会更加好,即一个类只实例化一个对象。

我们利用Spring框架的IOC容器时,可以自己指定我们需要生成的对象为单例还是多例的,这些往往是在配置bean对象的配置文件中进行。

指定生成对象为单例还是多例

在配置文件中的bean标签有个属性scope,表示这个bean对象的作用范围,比较好理解,有点像maven的pom.xml中指定一个依赖的范围一样。

<bean id="User" class="dao.UserDao" scope="singleton">

在这里我把UserDao的作用范围设置成singleton,就是单例,平时默认也是单例,因为我们之前分析过了。而在我们的程序中会存在实体类,实体类如果还用单例设计模式往往不太现实,我们需要用多例。

<bean id="User" class="domain.User" scope="propotype">

这里就设置为了多例。scope属性还有另外三个取值(request,session,globle-session),从字面比较容易猜出,存在于request域中、session域和集群环境下的session域中。

如果帮助到你解决问题,点个赞支持下哦.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值