spring的依赖注入和装配

1.依赖注入:构造注入、setter注入、接口注入

        构造注入通过构造函数,setter注入通过setter方法、接口注入需要实现一个接口

2.装配方式

        xml装配和注解装配

1)Xml文件装配

   使用构造注入依赖 (类中必须有有参构造方法) 

  <constructor-arg  name=””  value=””/>

   使用setter注入依赖         

<property/>

        ①简单类型的注入

<bean id=”” class=””>

    <property  name=” 属性名” value=”属性值”/>

</bean>

       ②引用类型的注入

<bean id=”” class=””>

    <property name=”属性名” ref=”引用类型实例对象的bean对象ID”>

</bean>

      ③引用类型的自动注入

By name 会去容器中查找 id值为book的Book实例对象装配
<bean id="" class="" autowire="byName">
By type 会去容器中找  类型为 Book的bean装配,如果有多个Book的bean则会报错
<bean id="" class="" autowire="byType">

      ④集合的注入


List,Map,Set,Array等

List通过<list>和<value>标签
    <property name=”list”>
        <list>
            <value>数值</value>
        </list>
    </property>

Map通过<entry>和<map>标签
    <map>
        <entry key=”keyone”  value=”valueone”/>
    </map>

当为引用类型的集合时,采用ref标签
......

2)注解装配

通过构造器来注入;通过setter方法来注入;通过filed变量来注入;

①简单类型的注入

        @Value   注入int、String等基本数据类型,只能标注在成员变量、setter方法上。

②引用类型的注入

        @Autowired 按类型自动装配,可标注在成员变量(不推荐)、构造方法、setter方法上。

        @Qualifier 按名称自动装配,需要和@Autowired搭配使用,标注在成员变量(不推荐)、setter方法上。

引用类型byName注入@Autowired(required=false/true) 和 @Qualifier(“”)联合使用

        @Autowired 还有一个属性 required,默认值为 true,表示当匹配失败后,会终止 程 序运行。若将其值设置为 false,则匹配失败,将被忽略,未匹配的属性值为 null。

        @Resource    

按名称或类型自动装配,需要 javax.annotation.jar 的支持,只能标注在成员变量、setter方法上。

JDK的Resource注解

@Resource

@Resource有type和name属性

@Resource(name=””) @Resource(type=””)

<1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常

<2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常

<3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常

<4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值