Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Brandao_ibi

[Resolvido] IOC-DIContainer

Recommended Posts

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");
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

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);
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);

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);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.