Skip to main content

Dependency Injection in Action

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

Comments

Popular posts from this blog

Java Tools Plugin for Notepad++

This post and the plugin is outdated. Please use plugin from this link which is updated and allows customization of shortcut key mappings and much more . Notepad++ is a great free editor. I like notepad++ because its a light weight editor and loads instantly. I use notepad++ for editing many files everyday. One plugin I always wanted was a plugin which lets me compile my java files and execute them from editor itself, but I couldn't find it so I wrote a myself. This plugin can be downloaded from  this link . I am working on this plugin to make it more effective, so that if user have more than one installations of JDK or JRE then user should be able to choose which one to use etc. This is a simple plugin which has two commands- Compile - compiles a java file. Run - executes a java file. For using this plugin Java must be installed on the system.

Encrypt Decrypt data using AES in Java

AES stands for Advanced Encryption Standard. AES is an Symmetric Key Algorithm, that means key used for encrypting the data, same key will be used for  decryption of  the encrypted data. This algorithm supplants DES algorithm. This post shows how to use AES algorithm in Java to encrypt and decrypt data. Encrypting Data- import java.security.GeneralSecurityException; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; public class AESTest1 { public static void main(String[] args) throws GeneralSecurityException { KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); keyGenerator.init(128); SecretKey key = keyGenerator.generateKey(); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE, key); byte encryptedData[] = cipher.doFinal(args[0].getBytes()); } } In above example we have used KeyGenerator class, which generates key for encrypting data, as we are using...

Java Tools Plugin for Notepad++ Update

This post and the plugin is outdated. Please use plugin from  this link  which is updated and allows customization of shortcut key mappings and much more . This post is regarding the update for Notepad++ plugin which I wrote to use compile and execute Java programs from the Notepad++ editor itself. I have updated the plugin so that user can customize the shortcut keys assigned for compiling and executing the programs. Following image shows simple Settings dialog where you can customize the shortcut keys mapping. Although user can customize the keys but to apply them Notepad++ must be restarted. Well, I tried but in Notepad++, there is no way to change mapping after initialization process of plugin.. Click here to download the plugin.