首页 > 解决方案 > Spring boot - 带有未传递参数的 @getMapping 方法

问题描述

我是 Spring Boot 的新手,所以我只是想了解一些事情。在我正在观看的其中一个教程中,我注意到讲师做了这样的事情:

@GetMapping
public String register(User user) {
    return "register";
}

有人可以解释一下与用户相关的情况。我认为将用户传递给视图“注册”是否正确?

如果没有用户传递给这个方法会发生什么,它只是使用一个新的用户对象。在这种情况下应该使用自动接线吗?

本例中的用户类实现了 UserDetails。

如果我的术语是关闭的,就像我说我是 Spring Boot 的新手

标签: springspring-bootspring-security

解决方案


通常,我没有遇到过很多这样的情况,即你有一个GetMapping像这样的“裸”(非注释)对象参数。

通常,Get 方法请求的参数将使用诸如@RequestParamor之类的注释进行修饰@PathVariable。由于您现在拥有代码,我立即认为此方法需要一个User对象作为@RequestBody. 但是在我看来,获取身体请求很奇怪。

我能想到的唯一例外是这是注入当前登录用户的某种方式。但在那种情况下,我只是通过传入一个 Spring SecurityPrincipal对象来看到这一点。我不确定一个UserDetail对象是否像这样工作,但我可能是错的。如果是这种情况,那么您所拥有的是一个“特殊用法”案例,其中 Spring 自动注入当前登录的用户,因为它将其识别为UserDetail.

否则,我不确定 Spring 应该在哪里或如何放置一个User对象的实例,如果它不是来自 an@RequestBody或其他东西。照原样,我希望这个User对象始终为空。


推荐阅读