Autowired Service在特定方法中为空



我有一个spring引导应用程序,突然,autowired服务在特定方法返回null。

下面是控制器的代码片段:
@RestController
@RequestMapping("/user")
@CrossOrigin
public class UserManagementController {
@Autowired
private UserService userService;
...
@PostMapping("/register")
private GameInfo register(@RequestBody UserInfo userInfo) {
User user = new User();
...
user.setUsername("user-" + userService.count());
...
return gameController.getGameInfo(user);
}
...
@PostMapping("/statistics")
public StatisticsInfo statistics(
@RequestParam(name = "username", required = true) String username,
Authentication authentication) {
User user = userService.findByUsername(username);
...
}
}

userService在第一个方法中为空,在第二个方法中工作良好。

更新:下面是UserService的代码片段,它在"register"中为空方法。

@Service
public class UserService implements UserDetailsService {
@Autowired
private UserRepository repository;
public long count() {
return repository.count();
}    
...
}

userService具有正常的CRUD方法。请注意,userService是空的,所以当我调用它的任何方法时都会抛出NullPointerException。

更新2:

我创建了一个有缺陷的方法register的克隆,并将其命名为dontRegister,这神奇地解决了register的问题,但在新方法中引入了同样的问题。

我不明白这背后的逻辑,因为我似乎总是需要添加一个额外的未使用的方法。

我会保留这个问题,直到可能有人提出一个解释。

您的注册方法是private,使其为public。从逻辑上讲,它应该是公共的,因为它是从包外部调用的。

最新更新