Spring MVC学习--依赖注入

一、首先看下概念

        依赖注入:曾用名控制反转(Inverse of Control,简称IoC,即一类调用一个接口的实现类,这个实现类由第三方决定)。

                            现在用名 Dependency Injection,简称DI。

二、依赖注入的几种方式

 1、属性注入

       通过setXxx()方法注入Bean的属性值或依赖对象。

      属性命名规则--属性的前两个字母要么全部大写,要么全部小写,如:iC,aB这样的属性,spring容器启动会报异常。

 2、构造函数注入

       在Bean实例化的时候,注入属性值,在实例化后可使用。在注入时其中可细分为:

      (1、)按类型匹配入参

       如:public class Car{

                ...省略

public Car(string brand,double price){

                     this.brand = brand;

                     this.price = price;

}

        }

        注入的bean文件如下:

         <bean id="car" class="com.baobao.ditype.Car">

              <constructor-arg type="java.lang.String">

                    <value>红旗CA72</value>

               <constructor-arg>

               <constructor-arg type="double">

                    <value>20000</value>

               </constructor-arg>

         </bean>

     (2、)按索引匹配入参

          

      如:public class Car{

                ...省略

public Car(string brand,String corp,double price){

                     this.brand = brand;

                     this.corp = corp;

                     this.price = price;

}

        }

       配置文件如下:

      <bean id="car" class="com.baobaotao.ditype.Car">

           <--索引从0开始-->

            <constructor-arg index="0" value="红旗CA72"/>

            <constructor-arg index="1" value="中国一汽"/>

            <constructor-arg index="2" value="2000"/>

       </bean>

       (3、)联合使用类型和索引匹配入参

        如:public class Car{

                ...省略

public Car(string brand,String corp,double price){

                     this.brand = brand;

                     this.corp = corp;

                     this.price = price;

}

                

                public Car(string brand,String corp,int maxSpeed){

                     this.brand = brand;

                     this.corp = corp;

                     this.price = price;

}

        }

        (注:多构造时,单独使用类型注入或索引注入都不能确定为哪个构造赋值,第三个属性值是不同的,因此使用索引加类型联合确定具体的构造函数)

        配置文件如下:

        <bean id="car" class="com.baobaotao.Car">

             <constructor-arg index="0" type="java.lang.String">

                  <value>红旗CA72</value>

             </constructor>

            <constructor-arg index="1" type="java.lang.String">

                  <value>中国一汽</value>

             </constructor>

             <constructor-arg index="2" type=“int">

                  <value>200</value>

             </constructor>

          </bean>

        (4、通过自身类型反射匹配入参)

          如:

          public Boss(String name,Car car,Office office){

this.name=name;

                this.car = car;

this.office=office;

          }

          配置文件如下:

          <bean id="boss" class="com.baobaotao.ditype.Boss">

             <!--这里没有设置type和index属性-->

             <constructor-arg>

                 <value>John</value>

             </constructor-arg>

     <constructor-arg>

                 <ref bean="car"/>

             </constructor-arg>

     <constructor-arg>

                 <ref bean="office"/>

             </constructor-arg>

           </bean>

           <bean id="car" class="com.baobaotao.ditype.Car"/>

           <bean id="office" class="com.baobaotao.ditype.Office"/>

           

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值