zoukankan      html  css  js  c++  java
  • springday02-go2

    1.复制xml文件到container.auto下
    2.Waiter类实现构造函数
    3.Bar类中Waiter作为其成员变量,并实现其get/set方法,有参和无参构造器,toString方法
    4.分别修改xml中bean为自动装配,byName,byType,constructor三种方式,测试自动装配

    Bar.java:

    package container.auto;

    public class Bar {

    private Waiter wt;


    public Waiter getWt() {
    return wt;
    }

    public void setWt(Waiter wt) {
    System.out.println("setWt方法.....");
    this.wt = wt;
    }

    public Bar() {
    System.out.println("Bar的无参构造器");
    }

    public Bar(Waiter wt) {
    System.out.println("Bar的有参构造器");
    this.wt = wt;
    }

    //此处是自动生成(使用source)
    @Override
    public String toString() {
    return "Bar [wt="+ wt +"]";

    }


    }

    Waiter.java:

    package container.auto;

    public class Waiter {

    public Waiter() {
    System.out.println("Waiter的无参构造器");
    }

    }

    xml:


    <bean id="wt" class="container.auto.Waiter"/>
    <!--
    <bean id="wt2" class="container.auto.Waiter"/>
    -->
    <!-- autowire属性:让容器自动装配(自动注入依赖关系)
    byName:容器查找和属性名称一致的bean,然后调用set方法来完成注入
    如果找不到对应的bean,注入null
    -->
    <bean id="bar1" class="container.auto.Bar"
    autowire="byName"/>
    <!-- byType:容器查找属性类型一致的bean,然后调用set方法来完成注入。
    如果找不到对应的bean,注入null,如果找到多个,则报错-->
    <bean id="bar2" class="container.auto.Bar"
    autowire="byType"/>

    <!-- constructor:容器查找与属性类型一致的bean,然后调用
    构造器来完成注入,如果找不到bean,则注入null,如果找到多个,则报错 -->
    <bean id="bar3" class="container.auto.Bar"
    autowire="constructor"/>

    TestCase.java:

    package container.auto;

    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;

    public class TestCase {

    @Test
    public void test1(){
    String cfg = "container/auto/applicationContext.xml";
    ApplicationContext ac =
    new ClassPathXmlApplicationContext(cfg);
    // Bar bar1 = ac.getBean("bar1",Bar.class);
    // System.out.println(bar1);
    // Bar bar2 = ac.getBean("bar2",Bar.class);
    // System.out.println(bar2);
    Bar bar3 = ac.getBean("bar3",Bar.class);
    System.out.println(bar3);
    }
    }

    测试结果:

    思考为什么会输出前面的语句?因为在xml中定义bean则会初始化构造函数。这里自动装配使用的是set方式。

  • 相关阅读:
    一只特立独行的猪
    每天写出好代码的5个建议
    电脑修好了
    VB编程修改AutoCAD长度型尺寸标注
    前天我放学回家
    VB编程修改AutoCAD坐标型尺寸标注
    VB编程操作AutoCAD尺寸标注样式
    这是一个错误的程序
    2011年6月27日星期二
    2011年6月20日星期一
  • 原文地址:https://www.cnblogs.com/lchzls/p/5769598.html
Copyright © 2011-2022 走看看