<bean id="engine" class="com.example.Engine" />
<bean id="car" class="com.example.Car" autowire="constructor" />
package in.sp.beans;
public class Engine
{
public void start()
{
System.out.println("Engine started...");
}
}
package in.sp.beans;
public class Car
{
private Engine engine;
// Constructor for dependency injection
public Car(Engine engine)
{
this.engine = engine;
}
public void drive()
{
engine.start();
System.out.println("Car is running...");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<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.xsd">
<!-- Define Engine bean -->
<bean id="engine" class="in.sp.beans.Engine" />
<!-- Define Car bean with constructor autowiring -->
<bean id="car" class="in.sp.beans.Car" autowire="constructor" />
</beans>
package in.sp.main;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import in.sp.beans.Car;
public class MainApp
{
public static void main(String[] args)
{
// Load Spring context from XML configuration
ApplicationContext context = new ClassPathXmlApplicationContext("in/sp/resources/applicationContext.xml");
// Retrieve the Car bean
Car car = context.getBean(Car.class);
// Call the drive method
car.drive();
}
}
Engine started... Car is running...
constructor
Autowiring Works ? Car
bean is configured with autowire="constructor"
.
Car
class that takes an argument of type Engine
and inject the engine
bean into it.
Car
class, the constructor public Car(Engine engine)
is used to inject the engine
dependency. Spring automatically matches the constructor argument type with the type of bean (Engine
).
<property>
or <constructor-arg>
Tags:
autowire="constructor"
is used, Spring automatically provides the Engine
bean to the Car
bean through the constructor, and no need for explicit <constructor-arg>
tags.
Your feedback helps us grow! If there's anything we can fix or improve, please let us know.
Weโre here to make our tutorials better based on your thoughts and suggestions.