Springboot在controller调用service出现npe的解决方案

最近在写springboot的时候被老大说代码耦合性太高,在重构的过程中发现了这个问题


1
2
3
4
@PostMapping("/api/login")
public HashMap<String, String> loginUser(User user) {
return new UserService().loginUser(user);
}

这是controller的一个接口处理,在调用该接口时,会出现UserService().loginUser()方法数据源npe的问题,查阅各处资料后发现,new出来的方法不处于springboot容器的管控,所以我们需要通过注入来实现controller调用service

1
2
3
4
5
6
7
@Autowired
UserService userService;

@PostMapping("/api/login")
public HashMap<String, String> loginUser(User user) {
return userService.loginUser(user);
}

这样service就被注入到容器中从而可以调用了