Estou fazendo uns testes com o Spring e não estou conseguindo passar parâmetros para uma classe injetada que tem um construtor
primeiro havia um erro ao executar a classe procurei uma solução que foi implementar um construtor sem argumentos mais, com isto só o erro foi solucionado
mais o meu intento que seria passar um argumento para a classe que estou injetando não foi resolvido ou melhor na verdade eu nem estou compreendendo como
vou fazer isto, olhei a documentação mais não entendi, procurei exemplos mais os mesmos tem exemplos usando arquivo de configuração e no meu caso
como o parâmetro pode mudar então não estou configurando os beans no xml.
@Service("municipio")
public class MunicipioImpl implements Municipio {
private String descricao;
private String estado;
public MunicipioImpl(String estado) {
this.estado = estado;
}
Nesta classe coloquei um construtor para já receber o estado que pode variar
@Service
public class SpringComDependencia {
private Municipio municipio;
public Municipio getMunicipio() {
return municipio;
}
@Autowired
public void setMunicipio(Municipio municipio) {
this.municipio = municipio;
}
public void run() {
Não estou sabendo como eu poderia passar algum argumento para o atributo municipio que estou injetando
A principio da forma como esta ao executar ocorre um erro
no default constructor found nested exception is java.lang.nosuchmethodexception spring
então corri atras e procurei respostas, coloquei um construtor sem argumentos na classe Municipio o que so resolveu o erro, mais não consegui obter um caminho para o meu
intento que é poder inserir um valor como argumento.
@Service
public class SpringComDependencia {
private Municipio municipio;
@Autowired
public SpringComDependencia (Municipio municipio) {
this.municipio = municipio;
}
acima podemos observar que o bean fileDataReader tem um construtor com argumentos com o valor [color=red]/data/file1.data [/color] mais é um valor fixo eu imagino poder usar String e com isto poder variar o valor a ser passado para o bean, eu li o artigo entendi
mais ainda assim não estou conseguindo fazer com que minha classe Municipio ao ser injetada tenha informado o estado no construtor
então fui a procura de mais informações, exemplos com construtor-arg e tentar resolver o meu problema, não sei se a anotação @Value ajudaria em algo, acho que sim http://www.devx.com/Java/Article/21665/0/page/2
Elimine o construtor com argumentos da classe MunicipioImpl. Se você vai injetar essa classe em outra classe, para que argumentos do tipo String? Você não vai poder fazer um new MunicipioImpl(“String”) quando injetar, então deixe apenas o construtor padrão na classe que deve funcionar.
Você usa argumento no construtor quando o argumento for também um bean. mas quando for apenas um atributo comum, não deve usar.
Na verdade estou somente vendo a possibilidade de passar parametros para a classe injetada, ou agora pensando melhor… como enviamos String´s por meio das anotações