当前位置: 首页 > article >正文

4.5---Spring框架之Spring的自动装配(复习版本)

使用autowire来配置自动装载模式,对象无需自己查找或创建与其关联的其他对象,由容器负责把需要相互协作的对象引用赋予各个对象

1.在Spring框架xml配置中共有5种自动装配:

1.no:默认的方式是不进行自动装配的,通过手工设置ref属性来进行装配bean。
2.byName:通过bean的名称进行自动装配,如果一个bean的 property (性质)与另一bean 的name 相同,就进行自动装配。
3.byType:通过参数的数据类型进行自动装配。
4.constructor:利用构造函数进行装配,并且构造函数的参数通过byType进行装配。
5.autodetect:自动探测,如果有构造方法,通过 construct的方式自动装配,否则使用 byType的方式自动装配。

2.基于注解的自动装配方式:

使用@Autowired、@Resource注解来自动装配指定的bean;

在使用@Autowired注解之前需要在Spring配置文件进行配置。

在启动springIoC时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器,当容器扫描到@Autowied、@Resource或@Inject时,就会在IoC容器自动查找需要的bean,并装配给该对象的属性。

在使用@Autowired时,首先在容器中查询对应类型的bean:

如果查询结果刚好为一个,就将该bean装配给@Autowired指定的数据;

如果查询的结果不止一个,那么@Autowired会根据名称来查找;

如果上述查找的结果为空,那么会抛出异常。解决方法时,使用required=false。

@Autowired的注入规则:

1、@Autowired默认情况下按照类型在spring容器中查找对应的组件 :context.getBean(XXX.class);

@Autowired 
private UserService userService;

此时,如果容器中只有一个userservice的bean,那么就会根据UserService.class进行注入

2.如果容器中存在多个userservice的bean对象,那么就会根据属性的名称作为组件的id在容器中查找context.getBean(“xxx”);

@Autowired 
private UserService userService2;

此时就会根据userservice2进行查找bean

@Autowired可用于:构造函数、成员变量、Setter方法
注:@Autowired和@Resource之间的区别:
(1) @Autowired默认是按照类型装配注入的,默认情况下它要求依赖对象必须存在(可以设置它required属性为false)。
(2) @Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入。


http://www.kler.cn/a/7158.html

相关文章:

  • PostgreSQL高可用Patroni安装(超详细)
  • 蓝桥杯-顺子日期
  • stdin文件流指针
  • 27.<Spring博客系统③(实现用户退出登录接口+发布博客+删除/编辑博客)>
  • 基于gradio+networkx库对图结构进行可视化展示
  • AI驱动的桌面笔记应用Reor
  • 2023年第十四届蓝桥杯JAVA B组题目
  • SpringMVC的全注解开发
  • MySQL开发02-数据库设计
  • Json交互处理_stata交互项检验
  • Huananzhi X99-AD3 Intel E5-2696v3黑苹果efi引导文件
  • Java 垃圾收集器
  • php防止表单重复提交的几种方法
  • 为什么要进行自动化测试,又有哪些需要注意的
  • rk3568 Android 添加IR遥控器
  • 交友项目【手机号登录注册功能】实现
  • MapGIS 6.7安装方法教程
  • (一)MyBatis源码阅读:明晰项目结构
  • 乐鑫 × 全国大学生物联网设计竞赛|探究基于 ESP32-S3 的农业革新应用
  • 【SQL开发实战技巧】系列(四十六):Oracle12C常用新特性☞会话级序列及数据泵(DataPump增强)支持像表一样导出视图
  • 单例设计模式
  • VS2019使用VLD(Visual Leak Detector)检测CPP内存泄漏
  • FPGA有哪些优质的带源码的IP开源网站?
  • ChatGPT如何写作-怎么让chatGPT批量写作
  • GPG Overview
  • 算法学习|动态规划 LeetCode 1049. 最后一块石头的重量 II、 494. 目标和、474.一和零