Sou iniciante e existem erros que ainda não entraram na minha lista de apredizado, por exemplo

11 respostas
joaopaulofranco

Error creating bean with name ‘contatoController’: Injection of resource fields failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [dao.ContatoDAO] is defined: Unsatisfied dependency of type [interface dao.ContatoDAO]: expected at least 1 matching bean, por favor qual a solução deste problema

11 Respostas

juceliohv

favor postar seus códigos.

joaopaulofranco
package daoImp;

import java.util.List;



import model.Contato;

import org.hibernate.Criteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.transaction.annotation.Transactional;

import dao.ContatoDAO;

public class ContatoDAOImp extends GenericDAOImp<Contato, Long> implements ContatoDAO{
	@Override
	@Transactional
	public List<Contato> findbyExample(Contato contato) {
		Criteria criteria = criaCriteria();
		if(!(contato.getNome().isEmpty())){
			criteria.add(Restrictions.ilike("nome", contato.getNome(),MatchMode.ANYWHERE));
		}
		if(!(contato.getApelido().isEmpty())){
			criteria.add(Restrictions.ilike("apelido", contato.getApelido(),MatchMode.ANYWHERE));
		}	
		
		
		criteria.addOrder(Order.asc("apelido"));
		return (List<Contato>)criteria.list();
		
	
	}

	

}
package dao;

import java.util.List;

import model.Contato;

public interface ContatoDAO extends GenericDAO <Contato, Long>{
	List<Contato> findbyExample(Contato contato);

}
package controller;


import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;


import model.Contato;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import dao.CargoDAO;
import dao.ContatoDAO;

@Component
@Scope("globalSession")
public class ContatoController {

	Contato contato,contatoFiltro;
	@Resource
	ContatoDAO dao;
	List<Contato> contatos;
	void limpar(){
		contato = new Contato();
		contatoFiltro = new Contato();
		contatos = new ArrayList<Contato>();
	}

	public ContatoController(){
		limpar();
	}



	public Contato getContato() {
		return contato;
	}

	public void setContato(Contato contato) {
		this.contato = contato;
	}

	public Contato getContatoFiltro() {return contatoFiltro;}
	public void setContatoFiltro(Contato contatoFiltro) {this.contatoFiltro = contatoFiltro;}

	public List<Contato> getContatos() {
		try {
		if(contatos.size()==0){
			contatos = dao.todos("nome");
		}}catch(Exception e){
			e.printStackTrace();
		}
		return     contatos; 
	}
	public void setContatos(List<Contato> contatos) {this.contatos = contatos;}

	public String listar(){
		limpar();
		return "listarContatos";
	}
	
	public String novo(){
		limpar();
		return "cadastrarContato";
	}
	
	public void filtrar(){
		contatos = dao.findbyExample(contatoFiltro);
	}

}

pronto agora acho que estou sendo mais completo.

joaopaulofranco
package dao;

import java.util.List;

import model.Contato;

public interface ContatoDAO extends GenericDAO <Contato, Long>{
	List<Contato> findbyExample(Contato contato);

}
juceliohv

você está definindo um método ou atributo.

Se for método use {} no final da declaração e não ;

Extreme_X

Na verdade está correto, ele está só declarando o metodo a ser implementado pela classe que for implementar a interface. Deve ser finalizado com ‘;’ mesmo.

juceliohv

e quanto aos modificadores ele pode usar ou não public, private e protected?

Extreme_X

Não, por default ele é público e não pode receber outro modificador. Geralmente o pessoal coloca por convenção de código do Java.

adriano_si

Cara, se você é iniciante, tem certeza que queres começar a programar usando um Framework como Spring que usa vários dos conceitos avançados de Programação como a DI. ???

Não seria o caso de você começar com Projetos de iniciante ??? Entender a sintaxe da linguagem, coisas assim ???

Abs []

nel

Concordo com o Adriano.

E mateus, assim:

1 - Todos os métodos declarados em uma interface, são, obrigatoriamente public e abstract, o que torna obrigatório a classe que implemente essa interface tenha uma implementação do método. Você não pode alterar essa definição.

2 - Toda variavél é public,static e final, ou seja, imutavél e também não podes mudar essa definição.

Ou seja:

public abstract void print();

É igual á:

void print();

No que refere-se a interface. O mesmo vale para a variavél, só que passa a ser public static final.

Abraços.

Extreme_X

adriano_si tem razão, você vai bater muito a cabeça usando os frameworks. Um dos propositos de eles existirem é para que nós possamos agilizar o desenvolvimento e diminuir a quantidade de linhas enorme que sempre escrevemos. No seu caso voce nao sabe o que esta acontecendo por tras do framework, o que é muito bom saber como ele faz pois você terá mais dominio da situação.

joaopaulofranco

Valeu pessoal, sei que meti os pés pela mão, é que estou em um projeto no qual um amigo de trabalho(o cara sabe) está me dando toques e para não pertubalo vim ao forum e desde já agradeço a todos que me ajudaram e aconselharam, valeu mesmo.

Criado 14 de junho de 2011
Ultima resposta 14 de jun. de 2011
Respostas 11
Participantes 5