Dependency Injection, one of the most talked topic in developers world.. I discussed about Dependency Injection in my earlier post, so if you haven't read it then I suggest that you should read it first.
In this post I am going to describe how dependency injection works..
Dependency injection is basically creating object and setting property of that object which are described in configuration.
Object can be created using default constructor or constructor with argument or by factory method.
Real time example for this is loading jdbc drivers using Class.forName, using forName we get the class object associated with class name that we provide.
We are using reflection over here, now if you don't know much about reflection, I again suggest you to read my earlier post on Reflection.
Now using same method we can create new object for specified class as follows,
Object someObject=Class.forName("classname_with_complete_packagename").newInstance();
Now next part is to set property values for this object, which can be done using setter method or using fields by using reflection.
By Java coding convention we know that if the field name is "width" then its setter method must be "setWidth(datatype value)", so we can use this setter method to set value for this property.
So how to do this??
Here is an example, following example shows how you can set value for a property using Field class in reflection.
Field field=someObject.getClass().getField("someFieldName");
field.set(someObject,someValue);
With this post I have attached source code for very simple dependency injection framework named Diol i.e. Dependency Injected Object Loader..
In Diol only one interface is there Diol itself,
public interface Diol{
...
}
In this interface there is only one method,
public interface Diol{
public Object getObject(String name);
}
This method returns requested object by name which is there is object map.
One implementation class FileSystemDiol is there which implements Diol and can be used to load xml configuration from file system.
Zip attached contains source code for Diol which can be opened in eclipse.
Download Links for Diol
1. Diol
In this post I am going to describe how dependency injection works..
Dependency injection is basically creating object and setting property of that object which are described in configuration.
Object can be created using default constructor or constructor with argument or by factory method.
Real time example for this is loading jdbc drivers using Class.forName, using forName we get the class object associated with class name that we provide.
We are using reflection over here, now if you don't know much about reflection, I again suggest you to read my earlier post on Reflection.
Now using same method we can create new object for specified class as follows,
Object someObject=Class.forName("classname_with_complete_packagename").newInstance();
Now next part is to set property values for this object, which can be done using setter method or using fields by using reflection.
By Java coding convention we know that if the field name is "width" then its setter method must be "setWidth(datatype value)", so we can use this setter method to set value for this property.
So how to do this??
Here is an example, following example shows how you can set value for a property using Field class in reflection.
Field field=someObject.getClass().getField("someFieldName");
field.set(someObject,someValue);
With this post I have attached source code for very simple dependency injection framework named Diol i.e. Dependency Injected Object Loader..
In Diol only one interface is there Diol itself,
public interface Diol{
...
}
In this interface there is only one method,
public interface Diol{
public Object getObject(String name);
}
This method returns requested object by name which is there is object map.
One implementation class FileSystemDiol is there which implements Diol and can be used to load xml configuration from file system.
Zip attached contains source code for Diol which can be opened in eclipse.
Download Links for Diol
1. Diol
Comments
Post a Comment