为何@Autowired字段会出现NullPointerException空指针异常?
问题描述
你可能以为我是通过new创建对象才引发这个错误,但事实并非如此。我已制作出最简复现示例。
报错信息
java.lang.NullPointerException: Cannot invoke "com.example.demo.Subject.getText()" because "this.subject" is null
at com.example.demo.SearchBase.runTest(SearchBase.java:16) ~[classes/:na]
其中subject成员标注了@Autowired,且包含该成员的类并未通过new创建——整个项目里找不到任何new关键字。
我怀疑问题出在RestController的@RequestBody SearchTest object这一行:这里自动创建的SearchTest实例似乎不在Spring上下文范围内,但我还没找到解决方案,而我必须通过@RequestBody将请求转换为对象。
相关代码
@RestController @RequestMapping("/api") public class TestRestController { private final TestService service; @Autowired public TestRestController(TestService theService) {service = theService;} @PostMapping("/test") public String test(@RequestBody SearchTest object) { return service.test(object); } }
测试方式:通过POSTMAN访问http://localhost:8080/api/test进行测试。
后续补充
- POST请求的输入参数为:
{"page":1} - 我之前误以为可以对JSON中不存在的额外属性使用
@Autowired注入……我不知道为什么无法实现,但显然这就是问题的根源。 - 核心疑问:为什么在这个场景下无法使用
@Autowired注入?
内容的提问来源于stack exchange,提问作者Victorqedu
相关产品推荐
相关产品推荐

