2017-06-11 1 views
0
@Controller 
@RequestMapping(value = "/myProject") 
public class myClassController { 

    @Autowired 
    Mydata data; 
    @RequestMapping(method = RequestMethod.GET, value = "/mydetails/{id}") 
    public @ResponseBody Mydata mymethod(@PathVariable(value = "id") String id, 
             HttpServletRequest request) { 
     data.setId(id); 
     return data; 
    } 
} 
@Component 
class Mydata { 
    private String Id; 

    public String getId() { 
     return Id; 
    } 

    public void setId(String s) { 
     this.Id= Id; 
    } 
} 

Question Ici, je suis Autowiring « Mydata », et MyMethod(), je suis en mesure de voir l'ID ayant une certaine valeur au cours du débogage. Après avoir défini la valeur, elle devient nulle. ie) data.getId() renvoie null. pls note: 'données' n'est pas nulle. Lorsque j'instancie Mydata en utilisant new, cela fonctionne bien. Quel est le problème avec mon autowiring? S'il vous plaît aider ..propriété de l'instance Autowired est nulle, même après la mise en valeur

+0

Indépendamment de ce problème, vous devriez repenser votre approche. Ce que vous avez ici pourrait ne pas être sûr. – Henry

Répondre

2

Ce n'est pas une erreur liée à Spring et autowiring.
Ce n'est qu'une simple erreur d'affectation.

Ici, vous ne donnez pas le paramètre sur le terrain:

public void setId(String s) { 
    this.Id= Id; 
} 

Vous assignez le champ lui-même. Cela n'a aucun effet.

Vous devriez plutôt faire:

public void setId(String s) { 
    this.Id= s; 
} 

Et comme une note de côté, si vous voulez respecter la convention de nommage: les noms de variables doivent commencer par une minuscule (id au lieu de Id).

+0

oups! c'était une faute de frappe .. @davidxxx –

+0

Ce sont des choses qui arrivent. En général, je m'efforce de régénérer les getters et setters avec IDE plutôt que de l'écrire ou de le modifier manuellement. Ce sont des méthodes si simples que nous sous-estimons les erreurs manuelles. – davidxxx

+0

C'était une faute de frappe, qui est arrivée pendant que je postais ici .. Je l'ai fait correctement dans mon code. Pouvez-vous trouver un problème dans mon autowiring? @davidxxx –