详解Spring Bean的集合注入和自动装配

网友投稿 298 2022-07-24


目录一、Spring Bean 集合注入集合常用标签案例二、Spring Bean自动装配什么是自动装配自动装配的方式案例注意点

一、Spring Bean 集合注入

在【Spring学习笔记(三)】已经讲了怎么注入基本数据类型和引用数据类型,接下来介绍如何注入比较特殊的数据类型——集合

集合常用标签

集合注入,用法也很简单,只需要在 Bean 标签下的 元素中添加以下集合的标签,再通过value或者ref进行属性注入

标签说明用于注入 list 集合,允许重复用于注入 set集合,不允许重复用于注入 key-value 的map集合, key 和 value 可以是任意类型用于注入 key-value 的properties集合,key 和 value 必须是是字符串类型

注意: List的底层也是通过数组实现的,所以标签是可以混用

案例

1.创建一个Collection类和Dept类,代码如下

/*Collection类*/

public class Collection {

//1.数组

private int[] array;

//2.list集合

private List list;

//3。set集合

private Set set;

//4.map集合

private Map map;

//5.properties集合

private Properties properties;

//打印各个集合

public void fmt() {

System.out.println("打印array:" + Arrays.toString(array));

System.out.println("打印List:" + list);

System.http://out.println("打印Set:" + set);

System.out.println("打印Map:" + map);

System.out.println("打印Properties:" + properties);

}

-----省略setter方法-----

}

/*Dept类*/

public class Dept {

//部门编号

private int deptNo;

//部门名称

private String deptName;

@Override

public String toString() {

return "Dept{" +

"deptNo=" + deptNo +

", deptName='" + deptName + '\'' +

'}';

}

-----省略setter方法-----

}

2.编写spring配置文件

114514

114514

114514

root

123456

3.编写运行程序

public static void main(String[] args) {

//获取IoC容器

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

//从容器中获取对象

Collection collection = context.getBean("collection", Collection.class);

//调用方法打印各个集合

collection.fmt();

}

运行结果如下

二、Spring Bean自动装配

Spring 在 Bean 与 Bean 之间建立依赖关系的行为称为 “装配”

Spring Bean 属性注入 前面学习了,在 spring配置文件中通过 中的 ref 属性,手动维护 Bean 与 Bean 之间的依赖关系的,即手动装配

手动装配图

什么是自动装配

如果容器中Bean很多,依赖关系又非常复杂,此时手动装配就略显吃力且繁琐了,所以Spring 框架为我们提供了 “自动装配” 功能,提高开发效率。

Spring 自动装配:Spring IoC容器根据自动装配方式,为指定的 Bean 从应用上下文(AppplicationContext 容器)自动查找并自动注入它所依赖的 Bean。

自动装配的方式

Spring 默认不支持自动装配的。使用自动装配,则需要对 Spring XML 配置文件中 元素的 autowire 属性进行设置,此时就不需要ref属性了。

属性值说明byName按名称自动装配。 Bean 的 id 或 name 属性值与这个对象属性的名称相同byType按类型自动装配。 Bean 的 class 属性值与这个对象属性的类型相匹配constructor按构造器参数自动装配。default默认采用上一级元素 设置的自动装配方式(default-autowire)进行装配。no默认值,表示不使用自动装配。

案例

1.创建员工类Employee和部门类Dept,添加各个成员变量的setter方法

/*员工类Employee*/

public class Employee {

//员工编号

private String empNo;

//员工姓名

private String empName;

//部门信息

private Dept dept;

//各个属性的setter方法

public void setEmpNo(int empNo) {

this.empNo = empNo;

}

public void setEmpName(String empName) {

this.empName = empName;

}

public void setDept(Dept dept) {

this.dept = dept;

}

----省略toString方法------

}

/*部门类Dept*/

public class Dept {

//部门编号

private String deptNo;

//部门名称

private String deptName;

//各个属性的setter方法

public void setDeptNo(int deptNo) {

this.deptNo = deptNo;

}

public void setDeptName(String deptName) {

this.deptName = deptName;

}

----省略toString方法------

}

2.编写spring配置文件

3.编写运行程序

public static void main(String[] args) {

//获取IoC容器

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

//从容器中获取对象

Employee employee = context.getBean("employee", Employee.class);

System.out.println(employee);

}

结果如下图

注意点

自动装配用于引用类型依赖注入,不能对简单类型进行操作使用按类型装配时(byType)必须保障容器中相同类型的bean唯一,推荐使用使用按名称装配时(byName)必须保障容器中具有指定名称的bean,因变量名与配置耦合,不推荐使用自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效

以上就是详解Spring Bean的集合注入和自动装配的详细内容,更多关于Spring Bean集合注入 自动装配的资料请关注我们其它相关文章!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一文搞懂Spring Bean中的作用域和生命周期
下一篇:Spring Bean属性注入的两种方式详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~