In Spring, you can use @Autowired annotation to auto wire bean on the setter method, constructor or a field. Moreover, it can autowired property in a particular bean.
@ImageSource-Slideshare.net
Note:
The @Autowired annotation is auto wire the bean by matching data type if spring container find more than one beans same data type then it find by name.
You can use @Autowired annotation on setter methods to get ref id of the <property> element in XML configuration file(spring.xml). When Spring finds an @Autowired annotation used with setter methods, it tries to perform byType autowiring on the method.
See following full example to demonstrate the use of @Autowired.
Circle.java
package com.dineshonjava.sdnext.autowiredannotation.tutorial;
import org.springframework.beans.factory.annotation.Autowired;
public class Circle
{
private Point center;
//using autowired annotation with setter method
@Autowired
public void setCenter(Point center)
{
this.center = center;
}
public void draw()
{
System.out.println("Circle is drawn of center ("+center.getX()+", "+center.getY()+")");
}
}
Point.java
package com.dineshonjava.sdnext.autowiredannotation.tutorial;
public class Point
{
private int x;
private int y;
/**
* @return the x
*/
public int getX() {
return x;
}
/**
* @param x the x to set
*/
public void setX(int x) {
this.x = x;
}
/**
* @return the y
*/
public int getY() {
return y;
}
/**
* @param y the y to set
*/
public void setY(int y) {
this.y = y;
}
}
DrawingApp.java
package com.dineshonjava.sdnext.autowiredannotation.tutorial;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @author Dinesh Rajput
*
*/
public class DrawingApp
{
/**
* @param args
*/
public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
Circle circle = (Circle) context.getBean("circle");
circle.draw();
}
}
spring.xml
<beans xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:> Once you are done with creating source and bean configuration files, let us run the application. If everything is fine with your application, this will print the following message:Output:Jul 10, 2012 7:41:44 PM org.springframework.context.support.AbstractApplicationContext prepareRefreshINFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@ab50cd: startup date [Tue Jul 10 19:41:44 IST 2012]; root of context hierarchyJul 10, 2012 7:41:44 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitionsINFO: Loading XML bean definitions from class path resource [spring.xml]Jul 10, 2012 7:41:44 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletonsINFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1d80e6d: defining beans [circle,pointA,pointB,pointC,center,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchyCircle is drawn of center (10, 10)
package com.dineshonjava.sdnext.autowiredannotation.tutorial;
import org.springframework.beans.factory.annotation.Autowired;
public class Circle
{
//using autowired annotation with property
@Autowired
private Point center;
public void setCenter(Point center)
{
this.center = center;
}
public void draw()
{
System.out.println("Circle is drawn of center ("+center.getX()+", "+center.getY()+")");
}
}
Circle.java
package com.dineshonjava.sdnext.autowiredannotation.tutorial;
import org.springframework.beans.factory.annotation.Autowired;
public class Circle
{
private Point center;
//using autowired annotation with constructor
@Autowired
public Center(Point center)
{
this.center = center;
}
public void draw()
{
System.out.println("Circle is drawn of center ("+center.getX()+", "+center.getY()+")");
}
}
Circle.java
package com.dineshonjava.sdnext.autowiredannotation.tutorial;
import org.springframework.beans.factory.annotation.Autowired;
public class Circle
{
//using autowired annotation with property
@Autowired(required=false)
private Point center;
public void setCenter(Point center)
{
this.center = center;
}
public void draw()
{
System.out.println("Circle is drawn of center ("+center.getX()+", "+center.getY()+")");
}
}
Strategy Design Patterns We can easily create a strategy design pattern using lambda. To implement…
Decorator Pattern A decorator pattern allows a user to add new functionality to an existing…
Delegating pattern In software engineering, the delegation pattern is an object-oriented design pattern that allows…
Technology has emerged a lot in the last decade, and now we have artificial intelligence;…
Managing a database is becoming increasingly complex now due to the vast amount of data…
Overview In this article, we will explore Spring Scheduler how we could use it by…