博客
关于我
spring的自动装配
阅读量:188 次
发布时间:2019-02-28

本文共 1798 字,大约阅读时间需要 5 分钟。

Spring自动装配详解

Spring框架提供了多种自动装配机制,帮助开发者简化依赖注入的配置。了解这些机制有助于更好地利用Spring的强大功能。

自动装配类型

Spring的自动装配机制主要有以下几种类型,开发者可以根据需求选择合适的方式:

  • byName:通过属性名寻找需要注入的对象。Spring会寻找与属性名相同的bean,如果找不到,则装不上。
  • byType:通过属性类型寻找需要注入的对象。Spring会寻找与属性类型匹配的bean,如果找不到或找到多个,会抛异常。
  • constructor:通过构造函数参数类型寻找需要注入的对象。Spring会寻找与构造函数参数类型匹配的一个或多个bean,如果找不到或找到多个,会抛异常。
  • autodetect:结合byType和constructor的优点,自动检测最佳匹配的bean。
  • default:指定默认的自动装配方式,需要在
    标签中配置。
  • no:不进行自动装配,是autowire默认值。
  • byName原理图

    理解byName原理图有助于更直观地掌握自动装配的工作流程。以下是简单的步骤说明:

    • Spring容器初始化时,解析XML配置文件。
    • 遍历所有bean标签。
    • 查找与属性名匹配的bean。
    • 如果找到且符合条件,则注入目标对象。

    实际案例

    Dog类:

    package com.hsp.autowire;public class Dog {    private String name;    private int age;    public String getName() { return name; }    public void setName(String name) { this.name = name; }    public int getAge() { return age; }    public void setAge(int age) { this.age = age; }}

    Master类:

    package com.hsp.autowire;public class Master {    private String name;    private Dog dog;    public String getName() { return name; }    public void setName(String name) { this.name = name; }    public Dog getDog() { return dog; }    public void setDog(Dog dog) { this.dog = dog; }}

    beans.xml配置:

    顺平

    App1测试类:

    package com.hsp.autowire;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class App1 {    public static void main(String[] args) {        ApplicationContext ac = new ClassPathXmlApplicationContext("com/hsp/autowire/beans.xml");        Master master = (Master) ac.getBean("master");        System.out.println(master.getName() + " 养 " + master.getDog().getName());    }}

    测试结果

    运行App1类,输出结果如下:

    顺平 养 小黄

    总结

    通过以上配置和测试,可以清晰地看到Spring自动装配的实际效果。理解这些机制有助于更高效地进行依赖注入,提升项目开发效率。

    转载地址:http://ifej.baihongyu.com/

    你可能感兴趣的文章
    Python-刷新页面,直到元素可单击
    查看>>
    PYTHON-唤醒+VOSK+DEEPSEEK+离线合成-实现纯离线大模型问答
    查看>>
    Python-在Dash回调中重用函数
    查看>>
    PYTHON-基本数据类型-元祖类型,字典类型,集合类型
    查看>>
    python-外观模式
    查看>>
    Python-如何使用FastAPI和uvicorn.run而不阻塞线程?
    查看>>
    Python-字典
    查看>>
    python-字符串
    查看>>
    Python-将二进制遮罩转换为多边形
    查看>>
    python-文件操作
    查看>>
    PYTHON-模块 sys os random shutil-练习
    查看>>
    Python-模块与包的管理
    查看>>
    PYTHON-模块定义 搜索路径
    查看>>
    Python-爬虫工程师-面试总结
    查看>>
    Python-类与文件读取结合
    查看>>
    python-类思想-实现简单增删查改
    查看>>
    python-网络编程
    查看>>
    python写入文件出现空行
    查看>>
    PYTHON-返回给定x的多边形路径的y坐标
    查看>>
    python-进程池与线程池,协程
    查看>>