Falha na injeção de dependência

3 respostas
victorgilc

Salve galera, bom dia!

Estou implementando Injeção de dependências em um projeto, porém na construção do meu objeto, ele simplesmente só me retorna valores nulos.

import javax.inject.Inject;
import javax.inject.Named;

@Named
public abstract class AbstractDAL<T> implements Accessable<T>, Serializable {
    
    @Inject
    IMapeableFactory fac;

Essa é minha implementação padrão

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package map;

import java.io.Serializable;
import javax.enterprise.inject.Default;
import mapeamento.IMapeableFactory;
import mapeamento.Mapeable;
import mapeamento.MappingException;

/**
 *
 * @author victor
 */
@Default
public class MapFactoryDefault implements Serializable, IMapeableFactory{

    public MapFactoryDefault() {
    }
    
    @Override
    public Mapeable getMapeable(Class type) throws MappingException {
        System.out.println("Mapa para " + type.getName() + " (null)");
        return null;
    }
    
}

e essa é minha interface:

package mapeamento;

import java.io.Serializable;

public interface IMapeableFactory extends Serializable 
{
    public <T> Mapeable getMapeable(Class<T> type) throws MappingException;
    
}

Meu beans.xml ainda não implementa nenhuma classe alternativa, uso o GlassFish 3.11, Netbeans 7.01 com JavaEE6 Web

3 Respostas

Thiago_Siqueira

Estou com o mesmo problema cara.

BrunoFurtado

Opa,

Brother, infelizmente não posso ajudar, mas gostaria de ouvir a opinião de vcs…

Já trabalhei em projetos que utilizavam o framework Spring, injeções de dependência, coisa e tal…
Inicialmente me empolguei com o aprendizado, mas depois vi que a parada poderia se tornar extremamente complexa.

Vcs não acham que está é uma solução muito custosa, complexa e sem muito nexo?
Não seria mais fácil, prático, ágil e extremamente mais barato utilizar soluções mais simples?

Está é uma opinião pessoal, gostaria de ouvi-los para adicionar conhecimento a esta minha visão um tanto quanto rústica.

victorgilc

Cara, injeção de dependências possui inúmeras vantagens, tais como:

Simplificação no código da aplicação. Com a injeção de dependência, os objetos da aplicação são liberados da tarefa de trazer suas próprias dependências (redução de código para inicialização e configuração de dependências); eles ficam livres para executar apenas suas regras negociais, pois, sabem que as suas dependências estarão lá quando necessárias.

Testabilidade. Se as dependências podem ser injetadas em um componente, torna-se possível (e talvez até mais fácil) injetar implementações mocks dessas dependências.

Baixo acoplamento entre os objetos. O objeto conhece suas dependências apenas por sua interface pública (não por sua implementação, nem por como foram instanciadas). Assim, a dependência pode ser trocada por uma implementação diferente, sem que o objeto dependente conheça a diferença.

Flexibilidade no gerenciamento do ciclo de vida dos objetos. Objetos podem ser cacheados, serem um singleton ou ter uma vida curta ? tudo controlado por meio de configurações e/ou pelo container.

Mas enfim, alguem sabe o que posso estar fazendo de errado?

Criado 16 de janeiro de 2012
Ultima resposta 16 de jan. de 2012
Respostas 3
Participantes 3