Bean的自动装配

Bean的自动装配

首先要清楚装配的概念,不要和注册混在一起,注册是注册,装配是装配,注册即是在xml文件中进行注册,按照正常程序来说,如果注册的bean中含有别的类的对象,需要进行手动的装配,这里的自动装配省略的是这一步,而不是不用进行注册

  • 自动装配是Spring满足bean以来的一种方式
  • Spring会在上下文中自动寻找 并且自动装配属性

Spring有三种装配方式

  1. xml显示配置
  2. java显示配置
  3. 隐式的自动装配

自动装配 @Autowired

  • byName

在这里插入图片描述

byName会自动在容器上下文中进行查找,与自己对象set方法后面的值对应的beanid

  • 在上图中为people对象,而people实例中又包含着dog和cat两种对象,所以在上图这个例子中people中含有cat和dog两种对象,同时也会有两种对象的set方法,因此在xml配置文件中锁注册的beanid如果有与people对象中所包含的set方法中一样的名字时就会进行自动装配

  • 在people类中的set方法后面cat和dog的首字母都是大写,在xml文件中首字母确是小写,这样仍能自动装配上,不区分大小写这个说法是不对的,set/get方法生成会自动将属性首字母大写,所以Spring也只是会自动把set和get后面的首字母变为小写

  • byType

    byType会自动在容器上下文中进行查找,与自己对象属性类型相同的bean

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PwahPgUS-1637478029021)(C:\Users\帅帅的小石头\AppData\Roaming\Typora\typora-user-images\image-20211121134234553.png)]

    • 必须要保证类型全局唯一,不然会出现报错
    使用注解实现自动装配

    扩展:jdk从1.5开始支持注解;Spring从就开始支持注解开发了

    要使用注解须知

    1. 导入约束(context约束)

    2. 配置注解的支持

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:context="http://www.springframework.org/schema/context"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
              https://www.springframework.org/schema/beans/spring-beans.xsd
              http://www.springframework.org/schema/context
              https://www.springframework.org/schema/context/spring-context.xsd">
      
          <!--开启注解的支持-->
          <context:annotation-config/>
      
      </beans>		
      

@Autowired

在这里插入图片描述

在people类中引用的对象上面加上@Autowired之后就可以直接进行装配了,前提是名字要一致

  • 除了在属性上注解还可以在set方法上进行注解
  • Autowired有限按照类型进行中查找,找不到的话就会报错,如果找到多个则按照名字,如果还是找不到的话,就会报错

@Qualifier

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ilfpqo5W-1637478029027)(C:\Users\帅帅的小石头\AppData\Roaming\Typora\typora-user-images\image-20211121140808596.png)]

@Qualifier

[外链图片转存中...(img-Ilfpqo5W-1637478029027)]

当xml中注册了多个同样类型的bean时可以通过@Qualifier来使用id进行装配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值