Spring Autowiring, Spring Autowire Tutorial


 

Spring Autowiring, Spring Autowire Tutorial

In this example you will learn about autowiring in spring framework.

In this example you will learn about autowiring in spring framework.

Spring Autowiring, Autowiring Collaborators

Spring have many collaborating bean, the autowire help in making the relationship between them. Autowiring reduces the effort of writing properties or constructor arguments. The autowiring in specified at the autowire attribute inside <bean/> element. The functionality of autowiring seen in five mode.

 Mode Explanation
no It is default which define no autowiring.
byName Autowiring is done by property name.
byType Autowiring is done by matching data type of property name.
constructor Autowiring is done by matching data type of property name with the property constructor argument.
autodetect When default constructor with no argument, it auto-wire by data type or it auto-wire by constructor.

You will see example step by step on all different mode defined above.

Lets see an example of no autowiring mode which is the default mode. Bean references must be defined via a ref element at the property.

Student.java

package spring.noautowiring.mode;

import org.springframework.beans.factory.annotation.Autowired;

public class Student {
  @Autowired
  private String age;
  private String name;
  private String address;

  public String getAge() {
    return age;
  }

  public void setAge(String age) {
    this.age = age;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getAddress() {
    return address;
  }

  public void setAddress(String address) {
    this.address = address;
  }
  
  @Override
  public String toString() {
    return "Student [name=" + name + ", age=" + age + 
                          ",address=" + address + "]";
  }

}

College.java

package spring.noautowiring.mode;

import org.springframework.beans.factory.annotation.Autowired;

public class College {
  
  private Student student;
  private String registration;
  private String year;

  @Autowired
  public void setStudent(Student student) {
    this.student = student;
  }

  public String getRegistration() {
    return registration;
  }

  public void setRegistration(String registration) {
    this.registration = registration;
  }

  public String getYear() {
    return year;
  }

  public void setYear(String year) {
    this.year = year;
  }
  
  @Override
  public String toString() {
    return "College [registration=" + registration + ", Student=" + student + 
                          ",year=" + year + "]";
  }

}

AutowireMain.java

package spring.noautowiring.mode;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AutowireMain {
  public static void main(String[] args) {
    BeanFactory beanfactory = new ClassPathXmlApplicationContext(
        "context.xml");
    College coll = (Collegebeanfactory.getBean("college");
    System.out.println(coll);
  }
}

context.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
 
 <!-- no auto-Wiring mode -->
  <bean id="college" 
class
="spring.noautowiring.mode.College" autowire="no">
    <property name="student" ref="student" />
    <property name="registration" value="BL001" />
    <property name="year" value="2001" />
  </bean>

  <bean id="student" class="spring.noautowiring.mode.Student">
    <property name="address" value="Delhi" />
    <property name="age" value="22" />
    <property name="name" value="Raj" />
  </bean>
<!-- End -->

</beans>

When you run this application it will display output as shown below:


College [registration=BL001, Student=Student [name=Raj, age=22,address=Delhi],year=2001]

Download this example code

Ads