Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
IOC-DI Container
IOC-DI é um container IOC desenvolvido em Java.
Download:IOC | Download IOC software for free at SourceForge.net
Recursos:
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) Bean 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");IOCContainer iocContainer = new IOCContainer();
iocContainer
.addBean("myBean", TestHelper.MySimpleBean.class, ScopeType.REQUEST);
Object instance = iocContainer.getBean("myBean");IOCContainer iocContainer = new IOCContainer();
iocContainer
.addBean("myBean", TestHelper.MySimpleBean.class, ScopeType.SESSION);
Object instance = iocContainer.getBean("myBean");
7) Custom scope
scope
public static class CustomScope implements Scope{
private final Map data;
public CustomScope() {
this.data = new HashMap();
}
public String getName(){
return "customScope";
}
public Object get(String beanName, ObjectFactory factory) {
if( data.containsKey(beanName) )
return data.get(beanName);
else{
Object value = factory.getObject();
data.put( beanName, value );
return value;
}
}
public void remove(String name) {
data.remove(name);
}
}
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);IOCContainer iocContainer = new IOCContainer();
iocContainer
.addBean("bean",MySimpleBean.class);
iocContainer
.addBean(MyBean.class).addConstructiorArg();
MyBean instance = (MyBean) iocContainer.getBean(MyBean.class);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);
9) Convention over Configuration (CoC)
IOCContainer iocContainer = new IOCContainer();
iocContainer.addBean(String.class)
.addConstructiorArg("dd/MM/yyy");
iocContainer.addBean(DateFormatSymbols.class);
iocContainer.setAutoDefinitionConstructor(true);
SimpleDateFormat o = (SimpleDateFormat)iocContainer.getBean(SimpleDateFormat.class);