Oie Galera!
Tenho com buscando uma solução para injeção de dependência a dois dias e não acho.
Acontece o seguinte tenho um projeto funcionando que roda Vraptor + Hibernate + Zk JSP e ele funciona assim:
-> o Vraptor chama a class jsp pela url.
-> abre a class ZK.jsp
-> ao clicar em um botão(evento acontece pelo Zk um ajax interno) que é chamado da classe classe Java; E nesta classe Java eu preciso fazer a injeção de dependência para que possa usar os métodos implementados no DAO.
Eu pesquisei um pouco, vi que tem como implementar o Spring em conjunto com Vraptor; Porém, estou programando a pouco tempo e não consegui, até segui o exemplo na apostila da Caelum fj28.
package br.com.teste.dao;
import static br.com.teste.util.StringUtil.isNullOrEmpty;
import java.util.Collection;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.LogicalExpression;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import br.com.caelum.vraptor.ioc.Component;
import br.com.teste.model.Bairro;
@Component
public class BairroDao {
private final Session session;
public BairroDao(Session session) {
this.session = session;
}
public void salvaOuAtualiza(Bairro bairro) {
this.session.saveOrUpdate(bairro);
}
public void salva(Bairro bairro) {
this.session.save(bairro);
}
public void atualiza(Bairro bairro) {
this.session.merge(bairro);
}
public void remove(Long id) {
Bairro bairro = (Bairro) this.session.load(Bairro.class, id);
this.session.delete(bairro);
}
//paginada
@SuppressWarnings("unchecked")
public Collection<Bairro> lista(int pageNumber, int pageSize) {
if(pageNumber == 0){
pageNumber = 1;
}
if (pageSize == 0 ){
pageSize = 5;
}
Collection<Bairro> bairroList = this.session.createCriteria(Bairro.class).setFirstResult(pageSize * (pageNumber - 1)).setMaxResults(pageSize).list();
return bairroList;
}
}
package br.com.teste.custom;
import java.sql.SQLException;
import org.hibernate.Session;
import org.zkoss.zhtml.Messagebox;
import org.zkoss.zk.ui.Components;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.ext.AfterCompose;
import org.zkoss.zul.Window;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.teste.dao.BairroDao;
import br.com.teste.util.HibernateUtil;
@Resource
@SuppressWarnings("serial")
public class TestePaginControle extends Window implements AfterCompose{
private BairroDao bairroDao ;
private Result result;
private Validator validator;
@SuppressWarnings("deprecation")
@Override
public void afterCompose() {
// TODO Auto-generated method stub
Components.wireVariables(this, this);
Components.addForwards(this,this);
}
public void onClick$botaoAtualizarBoxCateg(Event event)throws InterruptedException, SQLException{
System.out.println(bairroDao.lista(4, 3));
Messagebox.show("Teste ");
}
}
Alguém pode me auxiliar a configurar o Vraptor com Spring? e ou Me orientar como fazer a injeção de dependência de outra maneira? Outras soluções são validas dentro no contexto também.
[]s...
