Enjoying this Java & Spring tutorial?
Subscribe to Ram N Java on YouTubeIntroduction
In Spring Framework applications, configuring collections containing custom objects is a regular requirement. Using constructor injection ensures that your bean is initialized with all its required collection elements in an immutable, ready-to-use state.
In this guide, you will learn how to inject a List containing Dependent Objects into a bean through its constructor using Spring XML configuration.
1. Create the Dependent Class (Fruit)
First, define the dependent class Fruit which holds attributes such as fruit name and color:
public class Fruit {
private String fruitName;
private String color;
public Fruit(String fruitName, String color) {
this.fruitName = fruitName;
this.color = color;
}
@Override
public String toString() {
return "Fruit [fruitName=" + fruitName + ", color=" + color + "]";
}
}
2. Create the Target Class (FruitShop)
Create the target class FruitShop that accepts a List<Fruit> through its constructor:
import java.util.List;
public class FruitShop {
private String shopName;
private List<Fruit> fruitList;
public FruitShop(String shopName, List<Fruit> fruitList) {
this.shopName = shopName;
this.fruitList = fruitList;
}
public void displayFruitShopInfo() {
System.out.println("Shop Name: " + shopName);
System.out.println("Fruit Inventory:");
for (Fruit fruit : fruitList) {
System.out.println(" - " + fruit);
}
}
}
3. Configure Spring XML with <list> and <ref>
In your applicationContext.xml, declare the Fruit beans, and then reference them inside the <list> element inside <constructor-arg> using <ref bean="..." />:
<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">
<!-- Dependent Beans -->
<bean id="appleBean" class="Fruit">
<constructor-arg value="Apple" />
<constructor-arg value="Red" />
</bean>
<bean id="mangoBean" class="Fruit">
<constructor-arg value="Mango" />
<constructor-arg value="Yellow" />
</bean>
<!-- Target Bean -->
<bean id="fruitShop" class="FruitShop">
<constructor-arg value="Organic Fruit Bazaar" />
<constructor-arg>
<list>
<ref bean="appleBean" />
<ref bean="mangoBean" />
</list>
</constructor-arg>
</bean>
</beans>
4. Run and Test the Code
Load the application context and execute your program to see the list of dependent beans injected:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
FruitShop shop = (FruitShop) context.getBean("fruitShop");
shop.displayFruitShopInfo();
}
}
Watch More Spring Tutorials
Click here to watch on Youtube:
https://www.youtube.com/watch?v=BhLSUvOZR1s&list=UUhwKlOVR041tngjerWxVccw
Click the below Image to Enlarge:
| How to Inject List having Dependent Object using Spring dependency injection by constructor? |
| How to Inject List having Dependent Object using Spring dependency injection by constructor? |
| How to Inject List having Dependent Object using Spring dependency injection by constructor? |
| How to Inject List having Dependent Object using Spring dependency injection by constructor? |
No comments:
Post a Comment