博客
关于我
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/

    你可能感兴趣的文章
    PWM(Pulse Width Modulation)控制-ChatGPT4o作答
    查看>>
    PWM(Pulse Width Modulation,脉冲宽度调制)是什么
    查看>>
    pwnable bof
    查看>>
    PXC / Galera Cluster集群概述及原理分析
    查看>>
    PXC搭建MySQL高可用集群
    查看>>
    PXE + Kickstart 服务器批量安装Linux系统
    查看>>
    PXE+HTTP+TFTP+Kickstart实现无人值守部署centos6.10
    查看>>
    pxe实现linux的自动安装
    查看>>
    py 的 第 19 天
    查看>>
    Py-Bitcoin 项目使用教程
    查看>>
    Pytorch 图像增强 实现翻转裁剪色调等 附代码(全)
    查看>>
    pyautogui模拟鼠标拖动选中文字的基本知识(附Demo)
    查看>>
    pyautogui的基本介绍和使用
    查看>>
    PyCharm - 社区版是否能够突出显示 css/javascript?
    查看>>
    PyCharm 2018.3.5 RC 发布,原生 SSH 支持
    查看>>
    PyCharm 3.1 在索引期间永远挂起并且无法使用
    查看>>
    Pycharm Pro 2018.2 汉化专业激活破解
    查看>>
    PyCharm vs VSCode,是时候改变你的 IDE 了!
    查看>>
    PyCharm 中,“新建”(New)和“新建项目”(New Project)-ChatGPT4o作答
    查看>>
    PyCharm 代码编辑与调试运行详解
    查看>>