@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;
}
}
问题 在这里,我 Autowiring “Mydata”,并且在 mymethod() 中,我可以看到 id 在调试期间具有一些值。 设置该值后,它变为null。 即)data.getId() 返回 null。 请注意:“数据”不为空。 当我使用 new 实例化 Mydata 时,它工作正常。 我的 Autowiring 有什么问题?请帮忙..
最佳答案
这不是与 Spring 和 Autowiring 相关的错误。
这只是一个简单的赋值错误。
这里您没有将参数分配给字段:
public void setId(String s) {
this.Id= Id;
}
您将该字段分配给它本身。没有任何效果。
你应该这么做:
public void setId(String s) {
this.Id= s;
}
顺便说一句,如果您想遵守命名约定:变量名称应以小写字母开头(id
而不是 Id
)。
关于java - 即使设置值后, Autowiring 实例的属性仍为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44483558/