Melhor forma para injetar dependencia num AbstractBeanController

0 respostas
thimor

Ola,
Resolvi criar um AbstractBeanController para parar de ficar so escrevendo um monte de CRUD nos Controllers. Estava ficando muito cansativo. Entao criei um AbstractBeanController. O problema é que tive que colocar um dao Generico nele e no momento da criacao do beancontroller esse Dao ainda é nulo quando eu faco

@ManagedBean
@RequestScoped
public class SetorController {

    @ManagedProperty(name="setorService", value="#{setorService}")
    private SetorService setorService;
    private Setor setor;
    public SetorController() {
         setor = new Setor();
         super.setService(setorService);
    }
    //restante dos metodos.

Para resolver esse problema fiz o seguinte:

@PostConstruct
public void setService() {
    service = setorService;

Dessa forma funciona so que fico com dois services quando so preciso de um.

ai na classe Abstrata fiz assim:

public AbstractBeanController() {
        this.oClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
        service = (ServiceGenerico<T, Integer>) ac.getBean(oClass.getSimpleName() + "Service"); //Isso que esta pegando
    }

So que dessa forma eu so consegui fazer funcionar utilizando o applicationContext no src do projeto. Nao consigo ler o applicationContext que esta em WEB-INF, mesmo utilizando private ApplicationContext ac = new XmlWebApplicationContext();

Como esses beans ja estao instanciados pois o web.xml ja faz isso, tem outra forma de injetá-los? Pelas anotacoes na classe abstrata tambem nao funcionou.

Criado 27 de dezembro de 2011
Respostas 0
Participantes 1