Description

Iky Container is an IoC 'proof of concept' framework, still at an early stage, but mature enough to provide those features :

  • Constructor type IoC dependency injection.
  • Container configuration through XML file.
  • RMI-Enabled components.

Default container usage

		// Instanciate a container named "myContainer"
		ContainerI container = new DefaultContainer("myContainer");
		
		// Register a component under it's fully qualified class name
		container.registerComponentImplementation(MyClass.class);
		
		// Register component under an alias
		container.registerComponentImplementation(MyClass.class, "myClass");
		
		// Register an instance
		Object obj = new Object();
		container.registerComponentInstance(obj);
		
		// Retrieve objects
		MyClass = (MyClass) container.retrieveComponentInstance(MyClass.class)
		

XML container usage

An XML definition file for a container looks like this :

		<container>
    
		<!-- Containers Definition -->
			    
			<containers>
				<container>
				    <name>Internal Services</name>
				    <classname>net.wmind.container.DefaultContainer</classname>
				    <loadOnStartup>true</loadOnStartup>
				</container>
			</containers>
			    
			<!-- Component Definition -->
			    
			<components>
				<component>
					<name>Internationalization Service</name>
					<classname>net.wmind.iky.i18n.ResourceBundleService</classname>
					<alias>net.wmind.commons.PropertyResourceHelperI</alias>
					<loadOnStartup>true</loadOnStartup>
				</component>
				<component>
					<name>Local Console Service</name>
					<classname>net.wmind.iky.console.Console</classname>
					<loadOnStartup>true</loadOnStartup>
				</component>
			</components>
			
		</container>
		

It defines a container named "Internal Services" that registers two components, "Internationalization Service" and "Local Console Service". The container is created this way :

			ComponentFactoryI factory = new XmlContainerFactory("someXmlFile.xml");
			ContainerI container = (ContainerI) factory.retrieveInstance();
		

See the javadoc for the whole possibilities.