Dependency Injection via Constructor in spring

This is 7 of 16 parts of tutorial series

Tutorial Content: Spring tutorial for beginners

As the name implies, using constructor spring container will inject the dependencies.
For configuring spring in your eclipse ide please refer  hello world example

Dependency Injection via Constructor

1.Country.java:

We will create a simple class which has countryName and capital as attributes.
Create Country.java under package org.arpit.java2blog.Copy following content into Country.java.

2.Capital.java

Create Capital.java under package org.arpit.java2blog.Above Country class contains object of this class.Copy following content into Capital.java

3.ApplicationContext.xml

Here We have declared two beans with corresponding ids.
1.Class Country with id as “CountryBean”
2.Class Capital with id as “CapitalBean”
constructor-arg tag is used for providing argument to bean’ s constructor.type is for declaring data types and index defines position in constructor’s argument.
In above xml,Two arguments are passed.
1. India as string
2.CapitalBean ‘s reference
Property’s value tag is for assigning value to corresponding attribute. so In above xml file,we have assigned capitalName attribute of Capital class with value as Delhi
Property’s ref tag is used for assigning reference to the corresponding attribute. so In above xml file, we have assigned reference of Capital class to capital attribute of Country class.

4.ConstructorDIMain.java

This class contains main function.Create ConstructorDIMain.java under package org.arpit.java2blog.
You can note here that we have used ClassPathXmlApplicationContext for getting bean here.There are various ways for getting beans.In hello world example we have used XmlBeanFactory for getting beans.

5.Run it

When you will run above application, you will get following as output.
That’s all about Spring Dependency Injection via Constructor.
In next post,we will see spring bean scopes

Was this post helpful?

Leave a Reply

Your email address will not be published. Required fields are marked *