首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Spring教程】bean的作用域及自动装配

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

作者头像
程序员云帆哥
发布2022-05-12 08:51:02
发布2022-05-12 08:51:02
49600
代码可运行
举报
文章被收录于专栏:程序员云帆哥程序员云帆哥
运行总次数:0
代码可运行

一、bean的作用域

代码语言:javascript
代码运行次数:0
运行
复制
    <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作用域。

二、自动装配

代码语言:javascript
代码运行次数:0
运行
复制
<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、注解装配(最常用)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、bean的作用域
  • 二、自动装配
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档