In Spring Autowiring by AutoDetect means If a default constructor is found, uses “constructor“; Otherwise, uses “byType“. In this case, since there is a default constructor in “Circle” class, so, Spring auto wired it via constructor method – “public Circle(Point center)”.
You can enable this feature via autowire=”autodetect” like below :
With autowire by autodetect enabled, you do not need to declares the property tag anymore.
<bean autowire="autodetect" class="com.dineshonjava.sdnext.autoWiring.tutorial.Circle" id="circle"> </bean> <bean class="com.dineshonjava.sdnext.autoWiring.tutorial.Point" id="center"> <property name="x" value="0"></property> <property name="y" value="0"></property> </bean>
Popular Tutorials
Circle.java
package com.dineshonjava.sdnext.autoWiring.tutorial;
public class Circle
{
private Point center;
/**
* USING CONSTRUCTOR
* @param center the center to set
* autowiring by constructor
*/
public Center(Point center) {
this.center = center;
}
/**
* USING SETTER
* @param center the center to set
* autowiring by type
*/
public setCenter(Point center) {
this.center = center;
}
public void draw()
{
System.out.println("Center of circle is ("+center.getX()+", "+center.getY()+")");
}
}
Circle.java
package com.dineshonjava.sdnext.autoWiring.tutorial;
public class Circle
{
private Point center;
/**
* USING SETTER ONLY
* @param center the center to set
* autowiring by type
*/
public setCenter(Point center) {
this.center = center;
}
public void draw()
{
System.out.println("Center of circle is ("+center.getX()+", "+center.getY()+")");
}
}
Point.java
package com.dineshonjava.sdnext.autoWiring.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;
}
}
spring.xml
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemalocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean autowire="constructor" class="com.dineshonjava.sdnext.autoWiring.tutorial.Circle" id="circle">
</bean>
<bean class="com.dineshonjava.sdnext.autoWiring.tutorial.Point" id="center">
<property name="x" value="0"></property>
<property name="y" value="0"></property>
</bean>
</beans>
DrawingApp.java
package com.dineshonjava.sdnext.autoWiring.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();
}
}
Now run this application and get following output on the console.
Center of Circle is (0, 0)
Spring Related Topics you may like
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…