autowire自动装配

autowire自动装配

auto自动装配就是在要使用bean的时候进行自动注入
!注意! :自动注入只能注入引用数据类型和自定义类,其中基础数据类型和String数据类型不能自动注入,自动注入也没有意义,会报错。
解释
我们自动注入注入的是有效的属性值,针对自定义类,只能注入实例,那注入的就是一个实例,这是有意义的;
而对基础数据类型和String,编译器不知道要注入什么确切的值(比如int行可以是1、2、3、4…)没告诉编译器具体的值,注入无意义。

基础语法

<bean id = ''id_name" class = "class_name" autowire = "byType"/>
<bean id = ''id_name" class = "class_name" autowire = "byName"/>

byType:按类型匹配

根据属性的类型,在容器中找到与此类型匹配的bean,找不到就为null;
如果发现多个匹配的bean,就会报错;:类C、类D均implements了接口类B;在类A中实例接口B的实现类;此时编译器就无法判断要注入哪个类(C还是D),就会报错。

//在.xml文件中设置自动装配及自动装配类型
<bean id = ''id_name" class = "class_name" autowire = "byType"/>
/*以下是一个正确的例子;
定义了一个类A:UserService,其中调用了类B:UserDao*/
public class UserService {private UserDao udo;//自动在IOC容器中寻找UserDao类型的bean。public void setUdo(){this.udo = udo;}
}
/*以下是一个错误的例子
类C(Iphone)、类D(HonorPhone)均implements了接口类B(NFC);
在类A (UserService) 中实例接口B(NFC)的实现类;
此时编译器就无法判断要注入哪个类(C还是D),此时,就会报错。*///类D(HonorPhone)implements了接口类B(NFC);
public HonorPhone implements NFC {... ...
}
//类C(Iphone)implements了接口类B(NFC);
public Iphone implements NFC {... ...
}public class UserService {private NFC nfc;/*在类A (UserService) 中实例接口B(NFC)的实现类;此时编译器就无法判断要注入哪个类(C还是D),此时,就会报错。*/public void set (NFC nfc) {this.nfc = nfc;}
}

byName:按名称匹配

使用方法与byType基本一样,但与byType最大的区别是:byName不会报错,要么找到便匹配成功;要么找不到就给NULL;这就可以解决byType中对一个接口多实现后实例其实现类的冲突问题,因为可以使用名称确定唯一的bean名。

注意

  1. byType、byName只能选择一个使用
  2. 局限:autowire的自动装配不具有选择性,要么全部装配,要么全部不装配。

autowire自动装配相关推荐

  1. Spring autowire 自动装配简介

    Spring autowire 自动装配简介 注意本文与一般spring 标注@Autowire 无关 如下例子定义了3个类 Dperson Dcar & Daddress 其中Dperson ...

  2. Spring Autowire自动装配(转http://lep1985520.blog.163.com/blog/static/56600480200901441338486/)

    Spring Autowire自动装配 技术收藏 2009-01-14 16:13:38 阅读284 评论0   字号:大中小 订阅 Spring Autowire自动装配   在应用中,我们常常使用 ...

  3. Spring Autowire自动装配

    1.在应用中,我们常常使用<ref>标签为JavaBean注入它依赖的对象,同时也Spring为我们提供了一个自动装配的机制,在定义Bean时,<bean>标签有一个autow ...

  4. Spring Autowire自动装配 ---残梦追月原创

    在应用中,我们常常使用<ref>标签为JavaBean注入它依赖的对象.但是对于一个大型的系统,这个操作将会耗费我们大量的资源,我们不得不花费大量的时间和精力用于创建和维护系统中的< ...

  5. autowire`自动装配怎么玩

    什么是自动依赖注入,有什么优点 Spring 容器可以自动装配依赖 bean 之间的关系. Spring 通过检查 ApplicationContext 容器中的内容自动解析依赖 bean (也就是其 ...

  6. 【Spring】基于xml文件的Autowire自动装配

    一.什么是自动装配 根据指定的策略,在IOC容器中匹配某一个bean,自动为指定的bean中所依赖的类类型或接口类型属性赋值. 二.自动装配的使用 可以通过bean标签中的autowire属性设置自动 ...

  7. Spring Autowire自动装配介绍

    在应用中,我们常常使用<ref>标签为JavaBean注入它依赖的对象.但是对于一个大型的系统,这个操作将会耗费我们大量的资源,我们不得不花费大量的时间和精力用于创建和维护系统中的< ...

  8. 关于autowire自动装配中的byName的识别匹配

    byName是根据当前bean里面定义的set方法名称和xml文件中的bean的id名称来识别匹配的, 但是set方法名是大写,我们在id中设置的名称必须要是小写,比如setUserService,i ...

  9. 【Spring第五篇】Autowired:自动装配

    Autowired:自动装配 要使用注解,首先必须开启注解支持,再beans.xml中添加以下字段 <!-- 开启注解的支持--><context:annotation-config ...

最新文章

  1. python网络爬虫教程-如何入门 Python 爬虫?
  2. Java设计模式(一) -- 工厂方法模式
  3. 文件系统磁盘管理(一)--文件系统
  4. seaborn 子图_Seaborn FacetGrid:进一步完善子图
  5. 前端学习(3253):vs code中组件化编码
  6. 大型企业网络配置系列课程详解(八) --VoIP的配置与相关概念的理解
  7. 第一个OpenCV读取图像并显示
  8. AI未成解药 流利说2019年净亏5.75亿 Q4付费用户再降20万
  9. 【报告分享】2021年度中国虚拟数字人影响力指数报告.pdf(附下载链接)
  10. html css手册,CSS 参考手册
  11. 【计算理论】非确定性有限自动机 ( NFA ) 转换成 确定性有限自动机 ( DFA )
  12. 免安装mysql配置环境变量_mysql——免安装配置
  13. 支持flv视频播放的h5播放器-xgplayer
  14. OpenEmbedded 简介
  15. 腾讯云-产品开通和密钥查看
  16. VUE 组件手动渲染、组件延迟渲染
  17. 微信商户平台,开通企业付款到用户零钱功能
  18. MAC 网桥-交换机
  19. MAC合约3.0API
  20. 首次!TinyML低功耗边缘侧机器学习技术论坛-亚洲分会来到中国!

热门文章

  1. 各种下载深度学习数据集方法(In python)
  2. 用美图秀秀更改照片背景颜色
  3. 厚积薄发,微软OFFICE云时代宏脚本来临,Excel Srcipt已经推进到桌面端可用
  4. PS,路径无法描边或填充?
  5. wps(已保存至云文档)如何找到云文档
  6. php 微信上传多图片不显示不出来,php - 微信群发图文,content中图片显示不出
  7. 阿尔法Python练习(1-3)答案
  8. D2 日报 2019年4月8日
  9. Google Ads买量基础篇:Google如何展示App广告系列
  10. ESXi宿主机修改root密码