07. Example for Constructor based DI

11 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$69.99
List Price:  $99.99
You save:  $30
€64.98
List Price:  €92.84
You save:  €27.85
£55.64
List Price:  £79.48
You save:  £23.84
CA$95.72
List Price:  CA$136.74
You save:  CA$41.02
A$105.61
List Price:  A$150.88
You save:  A$45.27
S$94.51
List Price:  S$135.02
You save:  S$40.51
HK$546.96
List Price:  HK$781.40
You save:  HK$234.44
CHF 63.39
List Price:  CHF 90.57
You save:  CHF 27.17
NOK kr759.29
List Price:  NOK kr1,084.75
You save:  NOK kr325.45
DKK kr484.72
List Price:  DKK kr692.49
You save:  DKK kr207.76
NZ$116.27
List Price:  NZ$166.11
You save:  NZ$49.83
د.إ257.06
List Price:  د.إ367.25
You save:  د.إ110.18
৳7,668.91
List Price:  ৳10,956.06
You save:  ৳3,287.14
₹5,843.17
List Price:  ₹8,347.75
You save:  ₹2,504.57
RM331.68
List Price:  RM473.85
You save:  RM142.17
₦86,437.65
List Price:  ₦123,487.65
You save:  ₦37,050
₨19,439.77
List Price:  ₨27,772.29
You save:  ₨8,332.52
฿2,571.29
List Price:  ฿3,673.43
You save:  ฿1,102.14
₺2,259.44
List Price:  ₺3,227.91
You save:  ₺968.47
B$355.04
List Price:  B$507.22
You save:  B$152.18
R1,290.39
List Price:  R1,843.50
You save:  R553.10
Лв127.12
List Price:  Лв181.60
You save:  Лв54.48
₩94,866.43
List Price:  ₩135,529.28
You save:  ₩40,662.85
₪261.89
List Price:  ₪374.14
You save:  ₪112.25
₱3,999.98
List Price:  ₱5,714.50
You save:  ₱1,714.52
¥10,762.93
List Price:  ¥15,376.28
You save:  ¥4,613.34
MX$1,185.03
List Price:  MX$1,692.97
You save:  MX$507.94
QR254.87
List Price:  QR364.12
You save:  QR109.24
P951.97
List Price:  P1,360.02
You save:  P408.04
KSh9,396.15
List Price:  KSh13,423.65
You save:  KSh4,027.50
E£3,355.96
List Price:  E£4,794.44
You save:  E£1,438.47
ብር4,011.08
List Price:  ብር5,730.37
You save:  ብር1,719.28
Kz58,466.37
List Price:  Kz83,526.97
You save:  Kz25,060.59
CLP$65,872.48
List Price:  CLP$94,107.58
You save:  CLP$28,235.10
CN¥495.49
List Price:  CN¥707.87
You save:  CN¥212.38
RD$4,060.47
List Price:  RD$5,800.92
You save:  RD$1,740.45
DA9,414.39
List Price:  DA13,449.71
You save:  DA4,035.31
FJ$157.07
List Price:  FJ$224.39
You save:  FJ$67.32
Q543.15
List Price:  Q775.96
You save:  Q232.81
GY$14,618.48
List Price:  GY$20,884.44
You save:  GY$6,265.96
ISK kr9,767.80
List Price:  ISK kr13,954.60
You save:  ISK kr4,186.80
DH704.80
List Price:  DH1,006.90
You save:  DH302.10
L1,237.78
List Price:  L1,768.33
You save:  L530.55
ден4,001.09
List Price:  ден5,716.08
You save:  ден1,714.99
MOP$562.43
List Price:  MOP$803.50
You save:  MOP$241.07
N$1,293.49
List Price:  N$1,847.92
You save:  N$554.43
C$2,572.34
List Price:  C$3,674.94
You save:  C$1,102.59
रु9,329.91
List Price:  रु13,329.02
You save:  रु3,999.10
S/260.85
List Price:  S/372.66
You save:  S/111.80
K270.11
List Price:  K385.89
You save:  K115.77
SAR262.50
List Price:  SAR375.01
You save:  SAR112.51
ZK1,884.87
List Price:  ZK2,692.78
You save:  ZK807.91
L323.24
List Price:  L461.79
You save:  L138.55
Kč1,626.08
List Price:  Kč2,323.07
You save:  Kč696.99
Ft25,316.43
List Price:  Ft36,167.88
You save:  Ft10,851.45
SEK kr757.73
List Price:  SEK kr1,082.52
You save:  SEK kr324.79
ARS$61,503.14
List Price:  ARS$87,865.40
You save:  ARS$26,362.25
Bs483.90
List Price:  Bs691.31
You save:  Bs207.41
COP$271,944.94
List Price:  COP$388,509.43
You save:  COP$116,564.48
₡35,713.67
List Price:  ₡51,021.71
You save:  ₡15,308.04
L1,726.17
List Price:  L2,466.06
You save:  L739.89
₲523,116.65
List Price:  ₲747,341.53
You save:  ₲224,224.88
$U2,673.86
List Price:  $U3,819.97
You save:  $U1,146.10
zł281
List Price:  zł401.45
You save:  zł120.44
Already have an account? Log In

Transcript

Let us learn about constructor based dependency injection. In case of constructor based dependency injection, that dependencies are injected using a constructor. For this, you need to create more than one constructor with different parameters. Escape. The matching of the beam definition happens using these four types. By type, by index by name, object as parameter, what is the meaning of types depending upon the data type of the parameter that particular beam definition will be called depending upon the index index of 01 the parameter index okay and by name the name of the parameter adding objects as parameter What is the meaning of one class having other classes instance variables just like employee and address, so in case of conceptual base dependency injection, that dependencies will be injected there.

Using a constructor based on any of this particular criteria, let me show you a simple example of what an employee class with two constructors, name and salary one another one last name and department. Now here, when I'm just going in for a constructor based dependency injection, I have to either go in for Type R i can use index R, I can go in for the name of the parameter. So let us try this out. Let me go back to eclipse. Let me create a new application constructed there demo select simple string Maven click Finish ready let me go and change the version in Palm dot XML change Java version and the spring version. Checking for the Maven dependencies also, it has changed at SRC main Java and create a new Java class.

Do the package Name, conduct constructor dot training the class name of employee and go I want to show different variants. So I'm going in with the same class name only. Click Finish here that we have string name, int employee ID then string city salary. Okay. Now let us try creating different constructors. Whenever we are going in for a parameterised.

Constructor always remember you need to have a default constructor also. So go to show generate constructor from superclass. Click OK, the first constructor is done. Next go to source generate constructor using fields. Here I'm going to have name employee ID, city and salary are all for put together. This is fine then next Go to source generate constructor using fields.

Select name and employee ID and click OK. Then go to source generate constructor using fields, select name and city alone. Click Finish classes ready it is having four constructors one is the default one, one constructor with all the four instance variables. And what about the other two? In these two constructors I'm having only two parameters, but the parameter data type is different. They are not same they are different. So with this concept, we will try creating the XML file.

Let me go and create the XML file, SRC main resources, right click New bean configuration file constructed demo dot XML beam Heidi Coto EMP one And classes equal to fully qualified class name. My main definition is ready. If you see I have created the Java object what is the next step I need to do values to the instance variables. In case of database dependency injection, we use this property tax in case of constructor based dependency injection, we are going to use constructor arguments, our constructor arguments within which it's it's asking for parameters index name a reference, if you are referring to if you are having another classes instance variable type and value. So that is what I was talking about. So let me first start with name.

Name as the instance variable name, scientist going in for name, then value then again, ploy ad Okay, so this is one, let me create One more employee object with type thing right for name in we are not using integer in type of int okay ok and we are having one more okay here I need to change the employee ID and one more also with all the for instance variables. So, let me copy these two again Ctrl C Ctrl V okay now I am going to just use string in string in let us check let us look for errors okay string is from a salary 9000 and I will just changed it also. Okay I have created three beam definitions with different IDs and From constructor type, let me go on create the client class. I have created the client class instantiated the IOC container. And I have passed the configuration file name it is constant demo dot XML.

Next, let me try getting all the three string being CMP One, two and three, that we do that first, I hope you notice context or get being a C method. My code is done. Let me run this application. You can see the output what uh, what about the first one we have it is taking name and employee ID cities salaries, zero. And what about the second one? Let me just open this construct a demo then it will be good to look just type a string and type into your Givens.

So, automatically it will go in search of a construct and it is having cipher string and in and it is assigning the appropriate values. Let me come to the last one here. So, the how to use type now let me just go and modify instead of types as type string and look. Now let us see what is happening. Let me run this application. See though what happened what has happened it is going in search of a constructor which is having two parameters as string only, that's what you have given.

So, when you are using type there is no issue at all. When you are using name of the instance variable there is no issue at all. We will try one more I'm just going to give index use index Okay, here let me just have it as employee three and this one is imply four okay. And here in this case index index equal to zero index equal to one. Okay, let me save this. Now.

I will come here imply for we don't need So I'm just leaving it up let me run the application see if this will see output right let us check it out cross check it out constructed demo we have given index zero and index one. So, what it is doing it is going in search of a constructor with two parameters and again selecting a constructor which is having both a string as parameters and automatically the sustaining it now what I will do I will remove this download and give the value of 10 I will save this let me run the client part again. Okay, what is output name is Raj employee ID equal to zero cities 10 salary zero. So, when we are using name in a constructor argument, automatically it will go in search of that particular now what is that parameter name? So in this case name and employee ID is the parameter name, it will work fine when you are giving that type of string in that case also it was working fine.

What about index when you are giving zero on one? It's now it understand To set up two parameters, it is going to have a constructor with two parameters. And also both has to be strange same thing as saying because we are giving it in double quotes. So the first references only for a constructor which is adding two strings of parameters, if you don't have that, then only it will go in search of other constructors. So when I give zero and one what is happening by cities are trying to take but I want to assign it to employ ad so what I can do, I can just do this either I can use name or I can use state let me use type David. Now let me run this again.

Select clients run it. Now can you see how to sustain properly the other two We are not afraid so don't bother about it. So using constructor based dependency injection, when you are going in for type or name or index, you have to use some appropriately. Here also in this case we are given string in string and let me check the constructors. thing in string So, that is why it is working. So Fine.

Suppose say now here now like I'll just remove this off constructors and let me just add the last one here now I will just delete it save this. Now I will go back to this client dot java I have to retrieve it also right Ctrl C Ctrl V employee three employee three here return EMP four save it, let me run it, see the employee ID is 9000 cities funi salary is 10 Can you see it is not initialized or given properly. Why the reason is this you are used type type. So what you can do together with type you can either specify the index position or you can give the name of that particular instance variable. So here I will just you name equal to salary. Okay, then you give saying automatically to understand And I need is going to that appropriate string types but yet both of them are in so 9000 ns assigned to employee ID and 10 are some assigned to salary.

So, to avoid confusion, you are to mix and match type name an index that means phrases. Now I will run the program now we can see the output it is coming perfectly fine. So, this is about constructor based dependency injection. What I have shown you is how to work with a spring application using XML as configuration metadata going forward, we will not be using XML we will be using only annotation. This is just to give you an idea of how to work with a spring application. So, in the next session, let us see how to work with annotations or how to use annotations in a simple spring application.

Thank you

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.