博客
关于我
Spring学习笔记(四)——自动装配
阅读量:804 次
发布时间:2019-03-25

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

什么是自动装配?

自动装配是Spring框架用于满足JavaBean依赖的强大功能之一。Spring容器会自动查找并注入与当前Bean关联的其他Bean属性,从而简化依赖管理。在Spring中,实现自动装配的方式主要有两种:通过XML文件和通过注解。

传统的手动装配方式

在早期版本的Spring中,我们需要手动配置Bean及其依赖关系。以下是一个典型的例子:

这样,People bean的cat和dog属性会被手动注入。然而,这种方式存在灵活性不足的问题,且操作复杂。

通过XML文件实现自动装配

为了实现自动装配,可以在Bean的配置中设置autowire属性:

  • autowire="byName"
  • 这种方式是通过属性名进行自动注入。Spring会根据属性名(去掉首字母并转成小写)来查找对应的Bean。例如:

    < bean id="people" class="People" autowire="byName">    < property name="name" value="周杰伦" />    < property name="age" value="18" />
    1. autowire="byType"
    2. 通过类型进行自动注入。此方式需要确保同一类型的Bean在容器中是唯一的。例如:

      < bean id="people" class="People" autowire="byType">    < property name="name" value="周杰伦" />    < property name="age" value="18" />

      注意:通过byType方式时,若同一个类的Bean不唯一,会抛出“单一和唯一”的错误。

      通过注解实现自动装配

      使用注解法可以显著简化配置。在People类中添加反转义:

      public class People {    private String name;    private int age;    private Cat cat;    private Dog dog;    @Autowired    public void setCat(Cat cat) {        this.cat = cat;    }    @Autowired    public void setDog(Dog dog) {        this.dog = dog;    }}

      注解的灵活性

      • @Autowired

        • 通过类型和名称同时查找Bean。
        • 默认按类型查找,若不找到按名称查找。
        • @Autowired可以作用于属性或对应的set方法。
      • @Qualifier

        • 用于指定需要注入的特定Bean的id。
        • 通常与@Autowired配合使用。
      • @Resource

        • 前eliminar通过名称查找,失败后通过类型查找。
        • 属于更高级的注解,主要用于特定场景。

      @Autowired和@Resource的区别

      • @Autowired先按类型再按名称查找。
      • @Resource先按名称再按类型查找。
      • @Autowired和@Resource都可用于属性或set方法。
      • @Qualifier可以与@Autowired一起用于指定Bean的id。

      如何使用注解?

    3. 修改Cat类:
    4. public class Cat {    private String name;    public void setName(String name) {        this.name = name;    }    public void shout() {        System.out.println("猫叫喵喵喵~");    }}
      1. 修改配置文件:
      2. 确保Cat bean在容器中存在,并通过注解注入。

        总结

        • 通过XML文件实现自动装配支持两种方式:byName和byType。
        • 使用注解实现自动装配更加灵活,支持细粒度配置。
        • Autowired是首选,@Resource适合特定场景。
        • 两种方式的核心目标都是简化依赖管理,提高开发效率。

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

    你可能感兴趣的文章
    Objective-C实现Minimum Priority Queu最小优先级队列算法(附完整源码)
    查看>>
    Objective-C实现Minimum Vertex Cover最小顶点覆盖算法(附完整源码)
    查看>>
    Objective-C实现MinimumCostPath最小成本路径算法(附完整源码)
    查看>>
    Objective-C实现modular Binary Exponentiation模二进制指数算法 (附完整源码)
    查看>>
    Objective-C实现modular exponential模指数算法(附完整源码)
    查看>>
    Objective-C实现monte carlo dice蒙特卡洛骰子模拟算法(附完整源码)
    查看>>
    Objective-C实现monte carlo蒙特卡罗算法(附完整源码)
    查看>>
    Objective-C实现MSRCR算法(附完整源码)
    查看>>
    Objective-C实现multi level feedback queue多级反馈队列算法(附完整源码)
    查看>>
    Objective-C实现multilayer perceptron classifier多层感知器分类器算法(附完整源码)
    查看>>
    Objective-C实现multiplesThreeAndFive三或五倍数的算法 (附完整源码)
    查看>>
    Objective-C实现n body simulationn体模拟算法(附完整源码)
    查看>>
    Objective-C实现naive string search字符串搜索算法(附完整源码)
    查看>>
    Objective-C实现natural sort自然排序算法(附完整源码)
    查看>>
    Objective-C实现nested brackets嵌套括号算法(附完整源码)
    查看>>
    Objective-C实现nevilles method多项式插值算法(附完整源码)
    查看>>
    Objective-C实现newton raphson牛顿-拉夫森算法(附完整源码)
    查看>>
    Objective-C实现newtons second law of motion牛顿第二运动定律算法(附完整源码)
    查看>>
    Objective-C实现newton_forward_interpolation牛顿前插算法(附完整源码)
    查看>>
    Objective-C实现newton_raphson牛顿拉夫森算法(附完整源码)
    查看>>