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方式。

  • 相关阅读:
    逆序对的相关问题:bzoj1831,bzoj2431
    bzoj3211,bzoj3038
    hdu 1179最大匹配
    hdu 3038带权并查集
    poj 1733离散化(map)+并查集
    codeforces 369B
    poj 1456
    POJ 1988相对偏移
    poj 1986tarjan模板题
    poj 1330lca模板题离线算法
  • 原文地址:https://www.cnblogs.com/lchzls/p/5769598.html
Copyright © 2011-2022 走看看