Oi Paulo,
Obrigado! Vou postar para a sua avaliação!
As classes à seguir são iguais nos dois projetos, mas repare que não são as mesmas, vou comentar sobre as diferenças:
[code]@Component //somente no projeto com VRaptor
@Repository //somente no projeto com Struts
public class HibernateFuncionarioDao implements FuncionarioDao {
private HibernateTemplate template;
@Autowired //somente no projeto com Struts
public HibernateFuncionarioDao(HibernateTemplate template) {
this.template = template;
}
public Funcionario find(Long id) {
return template.get(Funcionario.class, id);
}
}
@Component //somente no projeto com VRaptor
@Service //somente no projeto com Struts
public class FuncionarioServiceImpl implements FuncionarioService {
private FuncionarioDao dao;
@Autowired //somente no projeto com Struts
public FuncionarioServiceImpl(FuncionarioDao dao) {
this.dao = dao;
}
public Funcionario busca(Long id) {
return dao.find(id);
}
}
@Entity
public class Funcionario {
@Id
@GeneratedValue
private Long id;
private String nome;
private String usuario;
private String senha;
private String email;
}[/code]As configurações para acesso ao banco são as mesmas no applicationContext.xml com BasicDataSource da apache, AnnotationSessionFactoryBean e HibernateTemplate, banco MySQL. Agora o Controller do VRaptor:
[code]@Resource
public class IndexController {
private final Result result;
private final FuncionarioService service;
public IndexController(Result result, FuncionarioService service) {
this.result = result;
this.service = service;
}
@Path("/")
public Funcionario index() {
return service.busca(1L);
}
}[/code]E a Action do Struts. Fiz focando Zero Configuration, e usa o Spring como objectFactory:
[code]@Result(name = Action.SUCCESS, value = “/jsp/index/index.jsp”)
public class IndexAction implements Action {
private final FuncionarioService service;
private Funcionario funcionario;
public IndexAction(FuncionarioService service) {
this.service = service;
}
public String execute() throws Exception {
this.funcionario = service.busca(1L);
return SUCCESS;
}
public Funcionario getFuncionario() {
return funcionario;
}
}[/code]A página de resultado mostra os dados do funcionario:<br>${funcionario.id}
<br>${funcionario.nome}
<br>${funcionario.usuario}
<br>${funcionario.senha}
<br>${funcionario.email}
Com essa estrutura fiz os testes. Se faltou alguma informação é só avisar que eu posto também!
Vlw! :thumbup: