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

    你可能感兴趣的文章
    mysql 数据库中 count(*),count(1),count(列名)区别和效率问题
    查看>>
    mysql 数据库备份及ibdata1的瘦身
    查看>>
    MySQL 数据库备份种类以及常用备份工具汇总
    查看>>
    mysql 数据库存储引擎怎么选择?快来看看性能测试吧
    查看>>
    MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作
    查看>>
    MySQL 数据库的高可用性分析
    查看>>
    MySQL 数据库设计总结
    查看>>
    Mysql 数据库重置ID排序
    查看>>
    Mysql 数据类型一日期
    查看>>
    MySQL 数据类型和属性
    查看>>
    mysql 敲错命令 想取消怎么办?
    查看>>
    Mysql 整形列的字节与存储范围
    查看>>
    mysql 断电数据损坏,无法启动
    查看>>
    MySQL 日期时间类型的选择
    查看>>
    Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
    查看>>
    MySQL 是如何加锁的?
    查看>>
    MySQL 是怎样运行的 - InnoDB数据页结构
    查看>>
    mysql 更新子表_mysql 在update中实现子查询的方式
    查看>>
    MySQL 有什么优点?
    查看>>
    mysql 权限整理记录
    查看>>