In this example you will learn about autowiring in spring framework.
In this example you will learn about autowiring in spring framework.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 = (College) beanfactory.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> |
College [registration=BL001, Student=Student [name=Raj, age=22,address=Delhi],year=2001] |