spring 依赖注入和依赖查找-凯发体育客户端

空空 2023-03-16 22:52:56 生活百科 235 ℃ 0 评论

1. 三种依赖注入

1.1 构造器注入(推荐)

使用构造函数给成员变量赋值通过配置的方式,让 spring 框架为我们注入

方式一:index 指定参数的索引位置

方式二:name 指定参数名称

1.2 setter 方法注入

可以按需注入

1.3 字段注入

参数注入(spring framerwork 4.0 后不推荐使用)@autowired@resource@inject@autowiredprivate orderservice orderservice

@autowired 处有一个黄色的波浪线提示 "field injection is not recommended"(不推荐使用字段注入)

1.4 三种注入方式的优缺点

spring所提供的三种依赖注入类型:构造器注入适合于强制对象注入;setter注入适合于可选对象注入;而字段注入是应该被避免使用的,因为对象无法脱离容器而独立运行

构造器注入优:会固定依赖注入的顺序;该方式不允许我们创建bean对象之间的循环依赖关系缺:需要注入的对象特别多的时候,我们的构造器就会显得非常的冗余;如果真的出现构造器参数列表过长的情况,可能是这个 bean 承担的责任太多,应该考虑组件的责任拆解参数注入无法注入 final 修饰的变量;final 修饰的变量,在实例化后就不可变,因此只能使用基于构造函数的依赖注入的方式类与di容器高度耦合,我们不能在外部使用它(与 spring 的 ioc 机制紧密耦合)

2. 两种依赖查找

bytype :按照 bean 的类型查找,@autowired 注解使用的是该策略byname : 按照 bean 的名称查找,@resource 注解使用的是该策略注解注入方式是否支持@primary来源bean不存在时处理@autowiredbytype是springframework原生注解可指定 required=false 来避免注入失败@resourcebyname否jsr250规范容器中不存在指定bean会抛出异常@injectbytype是jsr330规范 ( 需要导jar包 )容器中不存在指定bean会抛出异常

2.1 @autowired

是 spring 的自动装配,根据类型进行自动装配的

默认情况下要求依赖对象必须存在,如果需要允许 null 值,可以设置 @autowired(required = false)

如果要按名称装配,可以使用 @autowired @qualifier("beanname") ,指定唯一的 bean 对象

2.2 @resource

是 java 的自动装配,默认 byname,找不到再bytype

注意:如要指定了 name 属性 @resource(name="beanname") 就只会按照名称进行装配

2.3 @inject

根据类型自动装配如果需要按名称进行装配,需要配合 @named

3. 依赖注入不同类型的属性

3.1 简单类型(value)

3.2 引用类型(ref)

3.3 集合类型

数组或 list 集合

aaa aaa

pojo 类型的集合

set 集合

aaa aaa

map集合

properties 集合

tinyspot 20 同类热门推荐 《昆明的雨》 56946人看过 像拉线飞轮的夫妻关系 83199人看过 情调 70715人看过 关系中的妥协只会让问题越来越严重||臧玉清 19430人看过 如果蚊子得了新冠 55346人看过 本站只为传播信息,不对所发布的内容本身负责。如有凯发k8国际手机app下载的版权及其它问题,请联系站长处理。

本文tag:[查找]

网站地图