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

路径属性和值属性之间的差异@刚需映射注释

应向晨
2023-03-14

下面两个属性有什么区别,什么时候用哪个?

@GetMapping(path = "/usr/{userId}")
public String findDBUserGetMapping(@PathVariable("userId") String userId) {
  return "Test User";
}

@RequestMapping(value = "/usr/{userId}", method = RequestMethod.GET)
public String findDBUserReqMapping(@PathVariable("userId") String userId) {
  return "Test User";
}

共有3个答案

齐振
2023-03-14

@GetMapping是@RequestMapping的别名

@Get映射是一个组合注释,充当@刚需映射(method=刚需方法)的快捷方式。GET)。

值方法是路径方法的别名。

这是path()的别名。例如@RequestMapping(“/foo”)相当于@RequestMapping(path=“/foo”)。

所以这两种方法在这个意义上是相似的。

夏雅志
2023-03-14

@GetMapping@RequestMapping(method=RequestMethod.GET)的缩写。

就你而言@GetMapping(path=“/usr/{userId}”)@RequestMapping(value=“/usr/{userId}”,method=RequestMethod.GET)的缩写。

两者是等价的。更喜欢使用速记@GetMapping,而不是更详细的选项。使用@RequestMapping可以做的一件事是提供多个请求方法,而使用@GetMapping则不能。

@RequestMapping(value = "/path", method = {RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT)
public void handleRequet() {

}

当需要提供多个Http谓词时,请使用@RequestMapping

@刚需映射的另一种用法是当您需要为控制器提供顶级路径时。例如。

@RestController
@RequestMapping("/users")
public class UserController {

    @PostMapping
    public void createUser(Request request) {
        // POST /users
        // create a user
    }

    @GetMapping
    public Users getUsers(Request request) {
        // GET /users
        // get users
    }

    @GetMapping("/{id}")
    public Users getUserById(@PathVariable long id) {
        // GET /users/1
        // get user by id
    }
}
柯昱
2023-03-14

正如注释(和留档)中提到的,valuepath的别名,Spring经常将value元素声明为常用元素的别名。在@刚需映射(和@GetMap,...)的情况下,这是path属性:

这是path()的别名。例如,@RequestMapping(“/foo”)相当于@RequestMapping(path=“/foo”)

这背后的原因是,元素是注释的默认元素,因此它允许您以更简洁的方式编写代码。

其他例子包括:

  • @RequestParam→ <代码>名称)

然而,别名不仅限于注释元素,因为正如您在示例中所演示的,@GetMapping@RequestMapping(method=RequestMethod.GET)的别名。

只要在他们的代码中查找AliasFor的引用,就可以看到他们经常这样做。

 类似资料:
  • 在Spring(Boot)中,我可以使用语法将注释值外部化为应用程序/环境属性: 我还可以将控制器映射到多个路径: 我如何将两者结合起来?我想在我的属性中定义一个路径列表,或者是逗号分隔的,或者(最好)是我的中的列表: 但是我如何在注释中插入这两种列表呢? 编辑:我不知道如何从YAML中读取整个列表(可能是因为它在YAML解析时变成了单独的属性,…吧?) 对于单个CSV属性的简单情况,请说: 我可

  • 我目前的理解是,NiFi处理器属性是特定于该处理器的。那么,向处理器添加新属性将只在该处理器内可见,而不会传递到以后的处理器块? 这就是为什么需要添加在flowfile遍历数据流时保留在flowfile中的元数据: 那么,允许用户在处理器中添加定义和执行所需的自定义属性有什么价值呢?它是否类似于创建可以在其他属性中使用的变量?

  • 和之间有什么区别吗,两者都在Spring启动应用程序application.properties文件中指定。 下面是Spring靴留档的参考资料,不幸的是,它们之间没有显示任何联系,但看起来它们有相同的用途。 https://docs.spring.io/spring-boot/docs/2.6.6/reference/htmlsingle/#features.logging.console-输出

  • 我刚刚开始我的第一个DynamoDB项目,我一直在尽可能多地阅读文档。我认为我的项目最好的可能性是使用SDK中的高级DynamoDbMapper来允许CRUD操作。 在DynamoDB文档中,有一种属性值“M”的类型,可以在这里看到http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_AttributeValue.htm

  • 我想知道使用xpath是否可以实现以下目标 鉴于: 要求: 我想使用单个xpath表达式查找select元素,如下所示,bcs ID是动态的,并且在属性“for”中始终可用。 //label[text()=“Select Country”]/@for//*[@id=@for] 我们是否可以在xpath中传递属性值(此处为标签的属性),沿着路径进一步查找元素。 请不要建议使用兄弟姐妹、子级、id或s

  • 问题内容: 任何人都可以解释一下Spring中path属性如何将对象从html形式绑定到Java类。我是Spring Web Framework的新手,请帮忙。 问题答案: 长话短说,使用Java bean约定将path属性绑定到Java属性中。例如以下形式: 以及以下控制器处理程序方法: 如果使用以下属性定义了Student类,则将自动绑定: 规范文档的第8.3节提供了有关JavaBeans对流