Spring框架自动装配

Spring自动装配

  • autowire属性
    在spring中的配置文件元素中有一个属性autowire 负责的是自动装配标签的定义Javabean的属性。
    在这里插入图片描述
  • Spring框架支持5种自动装配的模式

1.no-------默认情况下不自动装配,使用 ref="里面所设置的id值 "手动装配
2.byName------根据设置autowire=“byName” 的这个中property的name值,去找另一个的,然后自动装配到这个中
3.byType------根据Property的name的数据类型(Type)自动装配,如果一个bean的数据类型,兼容另一个bean中property的数据类型,则自动装配。
4.constructor --------根据构造函数参数的数据类型,进行byType模式的自动装配。
5.autodetect --------如果发现默认的构造函数,用constructor模式,否则,用byType模式。

  • 举例说明
    1.默认no(不会自动装配)
    默认情况下,set注入的方式,需要通过’ref’来装配bean,分别有Person类和Student类,
    其中Person类中创建有Student的对象(private Student student;)
    在这里插入图片描述
    2.byName
    创建了一个Animal类和Dog类,在Animal类中创建Dog类型的对象,animal设置了autowire=“byName”,Spring自动去寻找与属性名"dog"相同的中id的值,找到的话,通过调用setName(String name)将其注入属性
    在这里插入图片描述
    如果没有找到,会报空指针异常
    在这里插入图片描述
    3.byType
    animal设置了autowire=“byType”,Spring自动去寻找与属性名"dog"类型相同的中id的类型,找到的话,通过调用setName(String name)将其注入属性
    在这里插入图片描述
    如果配置文件中有两个类型相同的bean会怎样呢?如下:
    在这里插入图片描述
    一旦配置如上,有两种相同数据类型的bean被配置,将抛出UnsatisfiedDependencyException异常,见以下:
    在这里插入图片描述
    4.constructor
    animal设置了autowire=“constructor”,Spring自动去寻找与参数类型相同的,找到后,通过 public Animal(Dog dog) { this.dog = dog; }将其注入

构造方法:
在这里插入图片描述

在这里插入图片描述
注意点:
自动装配虽然让开发变得更快速,但是同时却要花更大的力气维护,因为它增加了配置文件的复杂性,你甚至不知道哪一个bean会被自动注入到另一个bean中。通常大家都会用set的方式进行装配.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值