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.