Normally, you wire the bean explicitly, via ref attribute like this :
<bean class="com.dineshonjava.sdnext.autoWiring.tutorial.Circle" id="circle"> <constructor-arg><ref bean="center"></ref> </constructor-arg></bean> <bean class="com.dineshonjava.sdnext.autoWiring.tutorial.Point" id="center"> <property name="x" value="0"></property> <property name="y" value="0"></property> </bean>
With autowire by constructor enabled, you do not need to declares the property tag anymore. As long as the “center” beans are same data type as the constructor argument of “circle” bean, which is “center“, Spring will wire it automatically.
Lets see Exaple
Circle.java
package com.dineshonjava.sdnext.autoWiring.tutorial; public class Circle { private Point center; /** * @param center the center to set */ public Center(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)
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…