返回顶部
首页 > 资讯 > 后端开发 > Python >详解Spring Bean的集合注入和自动装配
  • 396
分享到

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

2024-04-02 19:04:59 396人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

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

一、Spring Bean 集合注入

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

集合常用标签

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

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

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

案例

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


public class Collection {
    //1.数组
    private int[] array;
    //2.list集合
    private List<Dept> list;
    //3。set集合
    private Set<Dept> set;
    //4.map集合
    private Map<String, String> map;
    //5.properties集合
    private Properties properties;
    //打印各个集合
    public void fmt() {
        System.out.println("打印array:" + Arrays.toString(array));
        System.out.println("打印List:" + list);
        System.out.println("打印Set:" + set);
        System.out.println("打印Map:" + map);
        System.out.println("打印Properties:" + properties);
    }
    -----省略setter方法-----    
}

public class Dept {
    //部门编号
    private int deptNo;
    //部门名称
    private String deptName;
    @Override
    public String toString() {
        return "Dept{" +
            "deptNo=" + deptNo +
            ", deptName='" + deptName + '\'' +
            '}';
    }
    -----省略setter方法----- 
}

2.编写spring配置文件

<!--部门类属性注入-->
<bean id="dept" class="com.bighorn.pojo.Dept">
    <property name="deptNo" value="1"/>
    <property name="deptName" value="后端组"/>
</bean>

<!--Collection类属性注入-->
<bean id="collection" class="com.bighorn.pojo.Collection">
    <!--数组类型-->
    <property name="array">
        <array>
            <value>114514</value>
            <value>114514</value>
            <value>114514</value>
        </array>
    </property>
    <!--List 类型-->
    <property name="list">
        <list>
            <ref bean="dept"/>
            <ref bean="dept"/>
            <ref bean="dept"/>
        </list>
    </property>
    <!--Set 类型-->
    <property name="set">
        <set>
            <ref bean="dept"/>
            <ref bean="dept"/>
            <ref bean="dept"/>
        </set>
    </property>
    <!--Map 类型-->
    <property name="map">
        <map>
            <entry key="name" value="bighorn"/>
            <entry key="age" value="18"/>
            <entry key="sex" value="man"/>
        </map>
    </property>
    <!--Properties 类型-->
    <property name="properties">
        <props>
            <prop key="username">root</prop>
            <prop key="passWord">123456</prop>
        </props>
    </property>
</bean>

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配置文件中通过 <constructor-arg><property> 中的 ref 属性,手动维护 Bean 与 Bean 之间的依赖关系的,即手动装配

手动装配图

什么是自动装配

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

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

自动装配的方式

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

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

案例

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


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方法------  
}


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配置文件

<!--部门类属性注入-->
<bean id="dept" class="com.bighorn.pojo.Dept">
    <property name="deptNo" value="2"/>
    <property name="deptName" value="前端组"/>
</bean>
<!--员工类属性注入-->
<bean id="employee" class="com.bighorn.pojo.Employee" autowire="byType">
    <property name="empNo" value="114514"/>
    <property name="empName" value="lzh"/>
</bean>

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集合注入 自动装配的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解Spring Bean的集合注入和自动装配

本文链接: https://lsjlt.com/news/151138.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详解Spring Bean的集合注入和自动装配
    目录一、Spring Bean 集合注入集合常用标签案例二、Spring Bean自动装配什么是自动装配自动装配的方式案例注意点一、Spring Bean 集合注入 在【Spring...
    99+
    2024-04-02
  • Spring Bean集合注入和自动装配的方法
    本篇内容介绍了“Spring Bean集合注入和自动装配的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Spring Be...
    99+
    2023-07-02
  • Spring中bean集合注入的方法详解
    目录Map注入List注入Set注入数组注入应用哈喽大家好啊,我是Hydra。 Spring作为项目中不可缺少的底层框架,提供的最基础的功能就是bean的管理了。bean的注入相信大...
    99+
    2024-04-02
  • Spring注解实现Bean自动装配示例详解
    何为自动装配 自动装配是 Spring 满足 bean 依赖的一种方式。 在使用 Spring 配置 bean 时,我们都要给配置的 bean 的属性设置一个值,如果不手动设置则都...
    99+
    2024-04-02
  • Spring使用注解实现Bean的自动装配
    目录一、利用注解方式注入属性二、@Autowired三、@Qualifier四、@Resource总结一、利用注解方式注入属性 <xml version="1.0" enco...
    99+
    2024-04-02
  • Spring Bean自动装配入门到精通
    目录Bean的自动装配byNamebyType使用注解Bean的自动装配 自动装配说明 自动装配是使用spring满足bean依赖的一种方法spring会在应用上下文中为某个bean...
    99+
    2022-11-13
    Spring Bean自动装配 Spring 自动装配
  • spring定义和装配bean详解
    在阅读本文之前,大家可先参阅《简单理解Spring之IOC和AOP及代码示例》一文,了解下Spring中IOC和AOP的相关内容。下面进入正题。本篇文章介绍在Spring中如何定义和装载Java Bean。业务场景还是人开车的例子。首先,定...
    99+
    2023-05-30
    spring bean bea
  • Spring中bean集合注入的方法是什么
    这篇文章主要讲解了“Spring中bean集合注入的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring中bean集合注入的方法是什么”吧!Spring作为项目中不可缺少的底...
    99+
    2023-07-02
  • 使用Spring注解怎么实现Bean自动装配功能
    这篇文章将为大家详细讲解有关使用Spring注解怎么实现Bean自动装配功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。使用须知:导入约束:context约束配置注解的支持: contex...
    99+
    2023-06-14
  • @Autowired自动装配,@Bean注入@Primary,@Qualifier优先级讲解
    目录Autowired自动装配第一种情况第二种情况第三种情况第四种情况总结@Autowired 取值app.getBean()@Primary 优先Autowired自动装配 spr...
    99+
    2024-04-02
  • Spring中Bean的作用域和自动装配方式
    目录Bean的作用域默认配置scope = “singleton”scope = “prototype”Bean的自动装配通过name自动装配通过type自动装配Bean的作用域 S...
    99+
    2024-04-02
  • spring boot自动装配之@ComponentScan注解用法详解
    目录1.@ComponentScan注解作用2. @ComponentScan注解属性3. @ComponentScan过滤规则说明4. 自定义扫描过滤规则5. @Component...
    99+
    2023-05-18
    @componentscan注解 @componentscan注解用法 componentscan作用
  • Spring Xml装配Bean的思路详解
    1,概述 在Spring中提供了三种方式来对Bean进行配置: 在xml文件中配置在Java的接口和实现类中配置隐式Bean的发现机制和自动装配原则 这三种方式都经常用到,而且常常会...
    99+
    2024-04-02
  • Spring装配Bean之如何实现组件扫描和自动装配
    这篇文章给大家分享的是有关Spring装配Bean之如何实现组件扫描和自动装配的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Spring从两个角度来实现自动化装配:组件扫描:Spring会自动发现应用上下文中所创...
    99+
    2023-05-31
    spring bean
  • spring中bean的继承与自动装配的用法
    本篇内容介绍了“spring中bean的继承与自动装配的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Spring之Bean的基本概念大...
    99+
    2023-05-30
    spring
  • spring bean的自动注入及循环依赖问题怎么解决
    这篇文章主要介绍了spring bean的自动注入及循环依赖问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇spring bean的自动注入及循环依赖问题怎么解决文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-07-05
  • 详解Spring bean的注解注入之@Autowired的原理及使用
    一、@Autowired 概念: @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,ge...
    99+
    2024-04-02
  • spring IOC容器的Bean管理XML自动装配过程
    目录什么是自动装配?自动装配过程1. 创建 2 个类2. 配置文件3. 测试方法什么是自动装配? 在之前的内容中,每给属性注入值都要一个个的用 property 标签来完成,比如: ...
    99+
    2024-04-02
  • Spring@Autowired注解与自动装配的示例分析
    这篇文章主要介绍了Spring@Autowired注解与自动装配的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1 配置文件的方法我们编写spring 框架的代码时候...
    99+
    2023-05-31
    spring @autowired
  • Spring自动装配之方法、构造器位置的自动注入操作
    Spring自动装配之方法、构造器位置的自动注入 1. 注解定义 @Autowired的定义信息如下: @Target({ElementType.CONSTRUCTOR, Ele...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作