Java Spring框架中'RequestMapping'注释的'name'属性的用例是什么?

Java Spring框架中'RequestMapping'注释的'name'属性的用例是什么?,java,spring,spring-mvc,Java,Spring,Spring Mvc,抱歉,如果你觉得这个问题很愚蠢。。。我不熟悉Spring框架。我花了几个小时寻找答案 根据Spring框架的官方文档,您可以使用name属性为RequestMapping注释指定名称 所以问题是给路线映射命名有什么意义 在Symfony框架中,我们可以使用映射名称生成URL 类控制器 { /** *@Route(name=“blogcoments”,path=“blog/{blog}/comments/{page}”) */ 公共功能listBlogComments(博客、页面) { ...

抱歉,如果你觉得这个问题很愚蠢。。。我不熟悉Spring框架。我花了几个小时寻找答案

根据Spring框架的官方文档,您可以使用
name
属性为
RequestMapping
注释指定名称

所以问题是给路线映射命名有什么意义

在Symfony框架中,我们可以使用映射名称生成URL

类控制器
{
/**
*@Route(name=“blogcoments”,path=“blog/{blog}/comments/{page}”)
*/
公共功能listBlogComments(博客、页面)
{
...
}
}
然后我们可以根据路由名称生成URL

//这将生成一个字符串“blog/27/comments/1”。
$url=$this->generateUrl('blogcoments'[
“博客”=>27,
“页面”=>1
]);
这是因为有了
Symfony\Component\Routing\Router
组件

在Spring框架中,控制器类可以像下面那样编写

@控制器
@应答器
类控制器{
@请求映射(name=“blogcoments”,path=“blog/{blog}/comments/{page}”)
公共列表listBlogComments(@PathVariable博客,@PathVariable长页){
...
}
}
现在,在本例中,如何基于映射的名称生成URL,即
“blogcoments”
?Symfony框架中是否有可用的Spring组件或服务?还有哪些其他可能的用例可用?

来自文档:

公共抽象字符串名

为此映射指定一个名称。在类型级别以及 在方法层面!在两个级别上使用时,将使用组合名称 通过以“#”作为分隔符的串联派生

关键时刻是在两个级别上使用时

因此,您也应该为控制器指定一个名称,它应该开始工作

@Controller
@ResponseBody
@RequestMapping(name = "AdminController")
class BlogController {

    @RequestMapping(name="BlogComments", path="blog/{blog}/comments/{page}")
    public List<Comment> listBlogComments(@PathVariable Blog blog, @PathVariable Long page) {
        ...
    }
}
@控制器
@应答器
@请求映射(name=“AdminController”)
类控制器{
@请求映射(name=“blogcoments”,path=“blog/{blog}/comments/{page}”)
公共列表listBlogComments(@PathVariable博客,@PathVariable长页){
...
}
}
然后您可以使用#


应用程序可以使用 借助静态方法MvcUriComponentsBuilder#fromMappingName或 在JSP中,通过Spring标记注册的“mvcUrl”函数 图书馆


@RequestMapping
注释的name属性可用于为控制器类和方法的映射分配名称

@Controller
@ResponseBody
@RequestMapping(name = "BlogController")
class BlogController {

    @RequestMapping(name="BlogComments", path="blog/{name}")
    public List<Comment> listBlogComments(@PathVariable String name) {
        ...
    }
}
@控制器
@应答器
@请求映射(name=“BlogController”)
类控制器{
@请求映射(name=“blogcoments”,path=“blog/{name}”)
公共列表listBlogComments(@PathVariable字符串名称){
...
}
}
SpringJSP标记库提供了一个名为mvcUrl的函数,可用于准备到基于此机制的控制器方法的链接

<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
...
<a href="${s:mvcUrl('BlogController#BlogComments').arg("test").buildAndExpand()}">Get Coments</a>

...

您是否通过给出
名称来说明如何访问,对吗?@AnishB。在上面给出的Symfony示例中,传递给
@Route
注释的
name
值用于生成映射到路由的URL。我的问题本质上是我们如何在春天完成同样的事情。
url
函数是什么?@user3858559我已经用这个名称添加了对rest端点可用的
url
函数的解释。希望这能解决你的问题。
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
...
<a href="${s:mvcUrl('BlogController#BlogComments').arg("test").buildAndExpand()}">Get Coments</a>