Wednesday, 20 April 2016

Autowiring : Example



Bean classes

class A {
  @Override
  public String toString() {
    return getClass().getName();
  }
}

class B {
  @Override
  public String toString() {
    return getClass().getName();
  }
}

class MyClass {
  private B B;
  private B B2;
  private A A;
  public MyClass() {
    System.out.println("MyClass()");
  }
  public MyClass(B B) {
    System.out.println("MyClass(B)");
    this.B = B;
  }
  public MyClass(B B, A A) {
    System.out.println("MyClass(B, A)");
    this.B = B;
    this.A = A;
  }
  public void setDependency(A A) {
    System.out.println("MyClass.setDependency(A)");
    this.A = A;
  }
  public void setB(B B) {
    System.out.println("MyClass.setB(B)");
    this.B = B;
  }
  public void setB2(B B2) {
    System.out.println("MyClass.setB2(B)");
    this.B2 = B2;
  }
  public void setA(A A) {
    System.out.println("MyClass.setA(A)");
    this.A = A;
  }
  @Override
  public String toString() {
    final StringBuilder sb = new StringBuilder();
    sb.append("MyClass");
    sb.append("{B=").append(B);
    sb.append(", B2=").append(B2);
    sb.append(", A=").append(A);
    sb.append('}');
    return sb.toString();
  }
}


Bean definition in Spring XML

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>
    <bean id="a" class="A"/>
    <bean id="b" class="B"/>
    <bean id="byName" autowire="byName" class="MyClass"/>
    <bean id="byType" autowire="byType" class="MyClass"/>
    <bean id="constructor" autowire="constructor" class="MyClass"/>
    <bean id="autodetect" autowire="autodetect" class="MyClass"/>
</beans>


Write a main program to use beans

XmlBeanFactory bf = new XmlBeanFactory(
                       new ClassPathResource("context.xml"));
System.out.println("byName:");
System.out.println(bf.getBean("byName"));
System.out.println("byType:");
System.out.println(bf.getBean("byType"));
System.out.println("constructor:");
System.out.println(bf.getBean("constructor"));
System.out.println("autodetect:");
System.out.println(bf.getBean("autodetect"));

No comments:

Post a Comment

Note: only a member of this blog may post a comment.