Tutorial Mentawai #7 – Inversão de Controle

Padrão

Olá pessoal! No tutorial de hoje, vamos ver como utilizar a inversão de controle implementada pelo Mentawai. Para quem não conhece, Inversão de Controle (ou IoC – Inversion of Control) é uma prática na orientação a objetos onde o acoplamento dos objetos é feito em tempo de execução, não sendo normalmente conhecido pelo compilador em uma análise estática.

No caso do Mentawai, a implementação de IoC é orientada a interfaces. Ou seja, você define a interface com os métodos que determinado objeto necessita, e o Mentawai se encarrega de injetar a dependência em tempo de execução.

O primeiro passo para utilizar é configurá-lo no Application Manager.

@Override
public void loadFilters() {

    filter(new MentaContainerFilter());
}

Em seguida, basta aplicar configurar o IoC, especificando quais dependências devem ser aplicadas.

@Override
public void setupIoC() {

    ioc(UsuarioDAO.class, HibernateUsuarioDAO.class);
}

No exemplo acima, dizemos que para a interface UsuarioDAO, utilizaremos a implementação HibernateUsuarioDAO. Pronto. Agora basta criar alguma forma em sua Action para que essa implementação seja aplicada. Duas opções são através de construtor ou através de um setter.

public class UsuarioAction extends BaseAction {

    private final UsuarioDAO usuarioDAO;

    public UsuarioAction(UsuarioDAO usuarioDAO) {
        this.usuarioDAO = usuarioDAO;
    }

    . . .
}

ou

public class UsuarioAction extends BaseAction {

    private UsuarioDAO usuarioDAO;

    public UsuarioAction() {
    }

    public void setUsuarioDAO(UsuarioDAO usuarioDAO) {
        this.usuarioDAO = usuarioDAO;
    }

    . . .
}

E pronto. Nada mais precisa ser feito, de forma que a implementação escolhida (no caso, HibernateUsuarioDAO) será injetada automaticamente na action.

Para maiores informações, dê uma olhada na documentação oficial.

É isso! Até a próxima! 😀

Deixe uma resposta