即使在设置值之后,自动装配实例的属性也为null

时间:2017-06-11 11:55:04

标签: java autowired

@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;
    }
} 

问题 在这里我自动装配'Mydata',在mymethod()中,我能够看到id在调试期间有一些价值。 设置值后,它将变为null。 ie)data.getId()返回null。 请注意:'data'不为null。 当我使用new实例化Mydata时,它的工作正常。 我的自动装配有什么问题?请帮忙..

1 个答案:

答案 0 :(得分:2)

这不是与Spring和自动装配有关的错误 这只是一个简单的分配错误。

此处您不会将参数分配给字段:

plot_ly(df_filtered, x = ~Score, y = ~Hospital.Name, 
        type = "bar", color = ~Compared.to.National, colors = FORMAT_CHART_COLOR_LIST, 
        hoverinfo = 'text', text = ~paste('State: ', State, 
                                          '<br> City: ', City,
                                          '<br> Score: ', Score))

您将字段分配给自己。它没有效果。

你应该这样做:

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

作为旁注,如果您想尊重命名约定:变量名称应以小写字母开头(public void setId(String s) { this.Id= s; } 而不是id)。