【Spring教程】bean的作用域及自动装配

一、bean的作用域

这里写图片描述

    <bean id="user" class="com.bean.User" scope="singleton">
       <property name="name" value="Neil"/>
    </bean>

  其中比较常用的是singleton和prototype两种作用域。对于singleton作用域的Bean,每次请求该Bean都将获得相同的实例。容器负责跟踪Bean实例的状态,负责维护Bean实例的生命周期行为;如果一个Bean被设置成prototype作用域,程序每次请求该id的Bean,Spring都会新建一个Bean实例,然后返回给程序。在这种情况下,Spring容器仅仅使用new 关键字创建Bean实例,一旦创建成功,容器不在跟踪实例,也不会维护Bean实例的状态。

  如果不指定Bean的作用域,Spring默认使用singleton作用域。Java在创建Java实例时,需要进行内存申请;销毁实例时,需要完成垃圾回收,这些工作都会导致系统开销的增加。因此,prototype作用域Bean的创建、销毁代价比较大。而singleton作用域的Bean实例一旦创建成功,可以重复使用。因此,除非必要,否则尽量避免将Bean被设置成prototype作用域。

二、自动装配

<bean id="user" class="com.bean.User" autowire="byName"/>

1、byName:根据要匹配到bean的属性中的那个属性名到xml文件中查找bean的id与之匹配的bean,如果找到,就把该bean装配到该属性中。
2、byType:根据bean的属性类型到上下文中查找与之对应的类型,如果找到,则装配;如果在上下文中存在多种此类型的bean则会抛出异常。
3、constructor:通过构造器注入bean;此方法与byType有相同的局限性,如果找到多个与之匹配的bean类型或者有多个构造器能使用自动装配,它就不会自动选择,而会抛出异常。
4、autodected:最佳自动装配方式:首先会使用constructor进行自动装配,如果不匹配则会使用byType进行装配。
5、注解装配(最常用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值