DI依赖注入
功能
IoC 容器跨不同层绑定bean 以及它们之间的关系。
方式
setter注入
您的实体类需要:
二传手
方法
;
代码:
?xml 版本=\’1.0\’ 编码=\’UTF-8\’?
豆xmlns=\’http://www.springframework.org/schema/beans\’
xmlns:xsi=\’http://www.w3.org/2001/XMLSchema-instance\’
xsi:schemaLocation=\’http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd\’
bean id=\’u\’ class=\’cn.ry.pojo.User\’
属性名称=\’id\’值=\’100\’/属性
属性名称=\’名称\’值=\’张三\’/属性
/豆子
/豆子
引用类型简单类型
在您的bean 上定义引用类型属性并提供可访问的设置方法。使用属性标记的value 属性将简单类型编号插入到配置中。
构造器注入
引用类型简单类型
在您的bean 上定义引用类型属性并提供可访问的构造函数。在配置中使用constructor-arg 标记的ref 属性来插入引用类型对象。
使用配置中constructor-arg标签的type属性设置,根据形参的类型进行插入。
配置时,使用constructor-arg标签的index属性,根据形参的位置来配置注入。
?xml 版本=\’1.0\’ 编码=\’UTF-8\’?
豆xmlns=\’http://www.springframework.org/schema/beans\’
xmlns:xsi=\’http://www.w3.org/2001/XMLSchema-instance\’
xsi:schemaLocation=\’http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd\’
bean id=\’u\’ class=\’cn.ry.pojo.User\’
!–
Index:第一个参数从0开始。
名称: 参数名称:
ref: 自定义类型参考。引用是bean 的ID 或名称。
type: 参数类型。与索引一起使用。
value: 简单类型的值。
—
构造函数参数索引=\’0\’ 类型=\’java.lang.Integer\’ 值=\’1\’
/构造函数参数
constructor-arg name=\’name\’ value=\’李四\’/constructor-arg
/豆子
/豆子
集合类型注入(使用较少)
设置集合注入列表注入映射注入数组注入属性注入
?xml 版本=\’1.0\’ 编码=\’UTF-8\’?
豆xmlns=\’http://www.springframework.org/schema/beans\’
xmlns:xsi=\’http://www.w3.org/2001/XMLSchema-instance\’
xmlns:p=\’http://www.springframework.org/schema/p\’
xsi:schemaLocation=\’http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd\’
bean id=\’r\’ class=\’cn.ry.pojo.Role\’ p:id=\’2\’ p:name=\’管理员\’/bean
bean id=\’u\’ class=\’cn.ry.pojo.User\’
注释设置
@价值
属性、方法、参数级别的注解用于直接给属性赋值。要操作的类型是简单数据类型。方法级别
我们需要向setter 方法添加其他注释。
@资源
属性、方法和类级注释用于自定义类型注入。
用法:@Resource(name=\’\’|type=自定义类型类对象);
这里name的值存储的是传递给Spring容器的bean的名称或ID,如果name=\’value\’并且beanName。
如果有任何差异,将会报告错误。
按类型注入时,Spring容器中不能出现多个相同类型的bean。
如果@Resource直接写在注入的属性上,则会根据类型自动搜索并注入。
属性名称=\’id\’值=\’1\’/属性
属性名称=\’名称\’值=\’用户1\’/属性
属性名称=\’角色\’ ref=\’r\’/属性
!– 设置类型注入–
属性名称=\’设置\’
放
值1/值
值小林/值
/放
/财产
!– 列表类型注入–
属性名称=\’列表\’
列表
值列表1/值
值列表2/值
/列表
/财产
!– 插入地图类型–
属性名称=\’地图\’
地图
输入键=\’k1\’值=\’m1\’/输入
输入键=\’k2\’值=\’m2\’/输入
/地图
/财产
!– 数组类型注入–
属性名称=\’数组\’
大批
值数组1/值
值数组2/值
/大批
/财产
!– 插入属性–
属性名称=\’pro\’
道具
prop key=\’用户名\’root/prop
prop key=\’密码\’root/prop
/道具
/财产
/豆子
/豆子
依赖注入方式选择
强制依赖项是使用构造函数创建的。当使用setter注入时,注入可能不会产生nu11对象。这是因为大多数Spring 框架建议使用构造函数。该框架对于构造函数注入比较严格。如果需要,可以将两者一起使用来完成所需的依赖注入,并使用setter注入来完成可选的依赖注入。在实际开发过程中,应根据实际情况进行分析。对于setter方法,您必须使用构造函数来注入您自己开发的模块。我们建议使用setter 注入。
注解配置
@Value
属性、方法、参数级别的注解用于直接给属性赋值。要操作的类型是简单数据类型。方法级别
需要添加其他注释
二传手
方法同上。
@Resource
属性、方法和类级注释用于自定义类型注入。 用法: @Resource(name=\’\’|type=自定义类型类对象); 这里name的值存储的是传递给Spring容器的bean。如果\’value\’与beanName不匹配,则会报错。按类型注入时,Spring 容器中不会出现多个相同类型的bean。如果直接将@Resource写入注入的属性中,则会自动搜索并相应注入。输入。
@Autowired
构造函数、方法、属性和参数级别注释与自定义类型注入相同。属性不需要setter 方法。 Spring 容器中必须有一个相同类型的bean。此注释中包含所需的类型。如果默认为true,是否应该引用强制插入——,如果为false,则当前值为null,不会报错。
@Qualifier
组合注解可以与@Autowired一起使用,以允许两个注解同时修改一个类。
@Autowired
@修饰符
(
《刀2》
)
私人的
用户哒哒
;
总结
简单和自定义数据类型使用注释插入,集合数据类型使用XML 插入。可以使用@Value 插入简单数据类型。我们建议使用@Autowired 插入自定义数据类型。
以上#spring相关内容来源仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92381.html