Injeção de Dependências pelo Construtor com Spring MVC

2 respostas
ERVER

Bom dia pessoas,

Após ler vários artigos e seguir dicas de alguns colegas aqui (dentre eles Rafael Guerreiro, que tem me ajudado muito), me deparei com a necessidade de fazer a injeção de dependências pelo construtor pelo Spring Framework 3.0.

Vou dar um exemplo simples pra explicar: tenho a classe Pessoa, com o atributo nome.

public class Pesso {

  private String nome;

  public Pessoa(String nome) {
    this.nome = nome;
  }

  public String getNome() {
    return this.nome;
  }

}

Como podem ver, eu não uso o setter - nesse exemplo até poderia usar, mas como estou tentando deixar de programar com modelos anêmicos e mais voltado pra DDD ...
E minha jsp apenas contendo um form com um textfield de name = "nome":

<form action="teste-pessoa" method="post">
	<table cellpadding="0" cellspacing="0" align="center">
		<tr>
			<td> <b> NOME: </b> </td>
			<td> <input type="text" id="nome" name="nome"> </td>
		</tr>
	</table> 
</form>

Com isso, no meu controller, SE eu tivesse colocado um método setter para nome da classe Pessoa, assim:

public void setNome(String nome) {
  this.nome = nome;
}

O Spring injetaria essa dependência, assim:

@RequestMapping(value = "teste-pessoa", method = RequestMethod.POST)
	public String carregarPaginaPost(Pessoa pessoa, Model model) {
		
		model.addAttribute("pessoa", pessoa);
		
		return "pessoa-post";
	}

Porém, o que quero é fazer essa injeção de dependência do objeto pessoa pelo construtor da classe Pessoa, e não pelo setter do atributo nome.

Já dei uma pesquisada e vi que consigo fazer isso de maneira programática, mas, além de não conseguir, queria saber se há outra maneira de fazer isso.

Caso algo esteja mal explicado, só dizer que tento melhorar.

Muito obrigado desde já, grande abraço.

2 Respostas

ERVER

Tentei com a anotação @Autowired, conforme diz esse trabalho: http://fernandogodoy.wordpress.com/tag/spring-framework/ e não funcionou.

Grato desde já, abraços.

ERVER

Up!

Criado 20 de junho de 2013
Ultima resposta 21 de jun. de 2013
Respostas 2
Participantes 1