IOC-DI Container
IOC-DIContainer is a IoC container for java. Has the following features:
1) Constructor injection
IOCContainer iocContainer = new IOCContainer();
iocContainer
.addBean(MyBean.class)
.addConstructiorArg(MySimpleBean.class);
MyBean instance = (MyBean) iocContainer.getBean(MyBean.class);
2) Setter injection
IOCContainer iocContainer = new IOCContainer();
iocContainer
.addBean(MyBean.class)
.addProperty("bean",MySimpleBean.class);
MyBean instance = (MyBean) iocContainer.getBean(MyBean.class);
3) Factory
IOCContainer iocContainer = new IOCContainer();
iocContainer.addBean(MyFactory.class);
BeanBuilder beanBuilder = iocContainer.addBean(MySimpleBean.class);
beanBuilder.setFactoryMethod("getInstance");
beanBuilder.setFactory(MyFactory.class.getName());
MySimpleBean instance = (MySimpleBean)iocContainer.getBean(MySimpleBean.class);
4) Factory with static method
IOCContainer iocContainer = new IOCContainer();
iocContainer
.addBean(MyEnum.class)
.addConstructiorArg("VALUE2")
.setFactoryMethod("valueOf");
MyEnum instance = (MyEnum) iocContainer.getBean(MyEnum.class);
5)Singleton
IOCContainer iocContainer = new IOCContainer();
iocContainer
.addBean("myBean", MySimpleBean.class, ScopeType.SINGLETON);
Object instance = iocContainer.getBean("myBean");
6) Web application
web.xml:
<listener>
<listener-class>org.brandao.ioc.web.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.brandao.ioc.web.RequestContextListener</listener-class>
</listener>
GlobalScope:
IOCContainer iocContainer = new IOCContainer();
iocContainer
.addBean("myBean", TestHelper.MySimpleBean.class, ScopeType.GLOBAL);
Object instance = iocContainer.getBean("myBean");
RequestScope:
IOCContainer iocContainer = new IOCContainer();
iocContainer
.addBean("myBean", TestHelper.MySimpleBean.class, ScopeType.REQUEST);
Object instance = iocContainer.getBean("myBean");
SessionScope:
IOCContainer iocContainer = new IOCContainer();
iocContainer
.addBean("myBean", TestHelper.MySimpleBean.class, ScopeType.SESSION);
Object instance = iocContainer.getBean("myBean");
7)Custom scope
public static class CustomScope implements Scope{
private final Map<String,Object> data;
public CustomScope() {
this.data = new HashMap();
}
public void put(String name, Object value) {
data.put( name, value );
}
public Object get(String name) {
return data.get( name );
}
public String getName(){
return "customScope";
}
}
CustomScope customScope = new CustomScope();
IOCContainer iocContainer = new IOCContainer();
iocContainer.getScopeManager()
.register(customScope.getName(), customScope);
iocContainer
.addBean( "myBean", TestHelper.MySimpleBean.class,
ScopeType.valueOf( customScope.getName() ) );
Object instance = iocContainer.getBean("myBean");
8)Autowire
Setter injection:
IOCContainer iocContainer = new IOCContainer();
iocContainer
.addBean(MySimpleBean.class);
iocContainer
.addBean(MyBean.class)
.addProperty("bean");
MyBean instance = (MyBean) iocContainer.getBean(MyBean.class);
Constructor injection:
IOCContainer iocContainer = new IOCContainer();
iocContainer
.addBean("bean",MySimpleBean.class);
iocContainer
.addBean(MyBean.class).addConstructiorArg();
MyBean instance = (MyBean) iocContainer.getBean(MyBean.class);
Factory:
IOCContainer iocContainer = new IOCContainer();
iocContainer.addBean("myEnumId", String.class)
.addConstructiorArg("VALUE2");
iocContainer
.addBean(MyEnum.class)
.addConstructiorArg()
.setFactoryMethod("valueOf");
MyEnum instance = (MyEnum) iocContainer.getBean(MyEnum.class);
- Login to post comments
