Spring DI

1.DI-依赖注入


  创建对象的过程中Spring可以依据配置对对象的属性 进行设置,这个过程称之为依赖注入,即DI


2.set方法注入


  通常javabean的属性都会私有化,而对外暴露setXx()getXx()方法,此时spring可以通过这样的setXx()方法将属性的值注入对象。


1)spring内置的可直接注入类型的注入


在<bean>标签下添加<property name="set方法名中set之后的单词(首字母小写)" value="要设置的属性的值">


2)非spring内置(即另外的实体类,比如定义一个Person类中有猫和狗两个属性,而猫和狗分别是两个实体类Cat和Dog的对象)的可以直接注入类型的注入


需要添加对应类的<bean>标签,在原始类中添加<property name="自定义名称(一般与类中的属性名称一致)" ref="非spring内置类配置的id值">


3.基于构造方法的注入


在<bean>标签下添加<constructor-arg index="构造方法的第几个参数,下标从0开始" name="为构造方法的哪个名字的参数ref:该构造方法参数的值,用来指定引用其他bean的值>
ps:index和name可以配置任何一个或同时配置,但要求一旦配置必须正确,推荐优先使用index方式配置,防止没有源码造成name无法匹配到对应的参数


4.自动装配


在Spring的set方式实现的注入过程中,支持自动装配机制。所谓自动装配机制,会根据要设置的javabean属性的名字或类型,到spring中自动寻找对应id或类型的<bean>进行设置,从而省去依次配置的过程,简化了配置。


自动装配的两种方式


1)为指定<bean>开启自动装配


在<bean>标签中添加autowire属性:
   byName:根据javabean(javabean简单的讲就是实体类,用来封装对象,这个类里面全部都是属性值和get、set方法)中需要注入的属性的名字,在spring容器中找对应id的<bean>,将该<bean>的对象赋值给当前的属性
   byType:根据javabean中需要注入的属性的类型,在Spring容器中找对应class类型的<bean>将该<bean>的对象赋值给当前的属性
   byType方式根据类型进行匹配,可能匹配到多个<bean>,此时会抛出异常,而byName是通过id来寻找<bean>,id没有重复,不会有这方面的问题,所以推荐使用byName方式
总结:自动装配机制简化了set方法注入中的非Spring内置的可以直接注入类型的注入


2)为全局配置自动装配


在<beans>标签中添加default-autowire属性:
  byName与byType和第一点相同
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值