Implementing a DI Framework for WizTools.org RESTClient
I wanted very basic DI functionality for RESTClient. Just wanted a mock implementation to execute when doing a mvn test, and real implementation when executed otherwise. So the functionality was simple. My immediate requirement did not require constructor injection or setter injection. And all the beans instantiated had to be singletons. No other fancy requirement. So for this limited functionality, I was able to design a small framework in two classes: DIFramework.java and DIException.java. For mapping the implementation to the interface, it is managed using a simple property file with content:
org.wiztools.restclient.IGlobalOptions = org.wiztools.restclient.GlobalOptions |
The mock implementation in the test execution would be:
org.wiztools.restclient.IGlobalOptions = org.wiztools.restclient.MockGlobalOptions |
org.wiztools.restclient.IGlobalOptions is the interface, and org.wiztools.restclient.GlobalOptions and org.wiztools.restclient.MockGlobalOptions are the implementation. To get instance of implementation bean:
IGlobalOptions obj = DIFramework.getInstance(IGlobalOptions.class);
This would return two different beans in different execution environments based on the property control.
FYI, your DIFramework implements ServiceLocator, not Dependency Injection.
Solomon
16 Dec 08 at 8:09 pm
Thanks for clarifying this, Solomon
subwiz
2 Jan 09 at 4:02 pm