zoukankan      html  css  js  c++  java
  • Spring通过构造方法注入的四种方式

    通过构造方法注入,就相当于给构造方法的参数传值

      set注入的缺点是无法清晰表达哪些属性是必须的,哪些是可选

        的,构造注入的优势是通过构造强制依赖关系,不可能实例化不

        完全的或无法使用的bean

    MemberBean定义四个变量,

       private String name;

    private Double salary;

    private Dept dept;

    private String sex;

    加上构造方法和toString方法:方便测试

    Dept

       private String dname;

    private String deptno;

    使用set方法注入

    第一种方法:根据索引赋值,索引都是以0开头的:

     <bean           

    id="memberBean" class="www.csdn.spring01.constructor.MemberBean">

             <constructor-arg index="0" value="刘晓刚" />

             <constructor-arg index="1" value="3500" />

             <constructor-arg index="2" ref="dept"/>

             <constructor-arg index="3" value="男" />

     第二种方法是根据所属类型传值

     这种方法基本上不怎么适用,因为一个类里可以有好几个相同基本类型的变量,很容易就混淆值传给哪一个参数了所以做好不要使用这种方法:

             <constructor-arg type="java.lang.String" value="刘晓刚" 

             <constructor-arg type="java.lang.Double" value="3500" />

             <constructor-arg type="www.csdn.spring01.constructor.Dept" ref="dept"/>

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

    第三种方法:根据参数的名字传值:(推荐用法)

    在这几种方法里我感觉这种方法是最实用的,他是根据名字来传值的,所以基本上只要名字对了,这个值就可以获取到  

             <constructor-arg name="name" value="刘晓刚" />

             <constructor-arg name="salary" value="3500" />

             <constructor-arg name="dept" ref="dept"/>

             <constructor-arg name="sex" value="男" />

    第四种方法:直接传值

     直接给参数赋值,这种方法也是根据顺序排的,所以一旦调换位置的话,就会出现bug,这种方法已经很原始了

             <constructor-arg  value="刘晓刚" />

             <constructor-arg  value="3500" />

             <constructor-arg  ref="dept"/>

             <constructor-arg  value="男" />

        </bean>

    <bean id="dept" class="www.csdn.spring01.constructor.Dept" >

     

      <property name="dname" value="北航"/>

      <property name="deptno" value="00001"/>

    </bean>S

  • 相关阅读:
    IIs安装&发布&解决遇到的问题
    Silverlight RadChart :创建十字定位&圈选
    桌面小工具,网络时间表
    毕设之c#多线程学习(官方+转载)
    常用的sql语言基础(1)
    转:C# DataGridView控件清空数据出错解决方法
    转:DataTable的Compute方法的应用
    转:判断DATASET是否为空
    转:DataSet、DataTable、DataRow、DataColumn区别及使用实例
    转发:C#加密方法汇总
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3042341.html
Copyright © 2011-2022 走看看