当前位置: 首页 > 知识库问答 >
问题:

自动安装服务在特定方法中为空

夏景胜
2023-03-14

我有一个spring boot应用程序,其中自动连接的服务突然在特定的方法中返回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);
    ...
  }
}

< code>userService在第一个方法中为null,在第二个方法中运行良好。

更新:这是用户服务的代码片段,在“寄存器”方法中为空。

@Service
public class UserService implements UserDetailsService {

    @Autowired
    private UserRepository repository;

    public long count() {
        return repository.count();
    }    
    ...
}

userService具有正常的CRUD方法。请注意,userService为null,因此当我调用其任何方法时都会抛出NullPointerException。

更新2:

我创建了一个错误方法register的克隆,并将其命名为dontRegister,这神奇地解决了

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

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

共有1个答案

曾高杰
2023-03-14

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

 类似资料:
  • 我有一个“Foo”控制器,它正在自动装配“Foo”服务。 现在,当我向控制器添加PreAuthorize注释时,视图方法工作正常,PreAuthorize标记仅授予具有ADMIN权限的用户访问权限,但响应体方法(getFoo)不能按预期工作。 使用PreAuthorize注释时,getFoo方法无法正确自动装配/实例化foService对象,该对象的值为null,导致NPE(空指针异常)。 问题概

  • 本文向大家介绍CentOS7.0下安装FTP服务的方法,包括了CentOS7.0下安装FTP服务的方法的使用技巧和注意事项,需要的朋友参考一下 一个小插曲,安装一个FTP服务,便于和远程服务器的文件沟通。后续我们会讲到如何使用Capistrano配合git完成服务器的代码部署以及发布流程。现在,代码先走FTP吧,挺稳。 FTP简介 FTP 是File Transfer Protocol(文件传输协

  • 本文向大家介绍Centos7.3下vsftp服务的安装方法,包括了Centos7.3下vsftp服务的安装方法的使用技巧和注意事项,需要的朋友参考一下 我们需要向centos操作系统的服务器上上传文件或者下载文件,这时候,ftp有必要安装下,本文为大家分享了vsftp服务的安装方法,供大家参考,具体内容如下 我们选择主流的vsftp; 第一步:安装vsftp 第二步:设置开机启动 第三步:启动ft

  • 本文向大家介绍centos6.5服务器安装Nginx设置服务和开机自启的方法,包括了centos6.5服务器安装Nginx设置服务和开机自启的方法的使用技巧和注意事项,需要的朋友参考一下 本文介绍了centos6.5服务器安装Nginx设置服务和开机自启的方法,分享给大家,也给自己留个笔记 1、安装Nginx及其依赖 首先是老套路,使用ssh链接服务器,还记得以前的代码吗? 在终端中输入上面命令按

  • 本文向大家介绍Windows下把MongoDB安装为系统服务的方法,包括了Windows下把MongoDB安装为系统服务的方法的使用技巧和注意事项,需要的朋友参考一下 总结一下如何将mongoDB安装为WinXP下系统服务。 使用的命令如下: 但是无法连接: 看了一下日志,还需要使用net start MongoDB命令来启动服务,日志如下: 按照提示,在CMD下运行 net start Mong

  • 本文向大家介绍win10下opencv-python特定版本手动安装与pip自动安装教程,包括了win10下opencv-python特定版本手动安装与pip自动安装教程的使用技巧和注意事项,需要的朋友参考一下 1. 特定版本的python-opencv安装 在https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv 下载对应python版本和windo