Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 在SpringMVC控制器上重写RequestMapping_Spring Mvc - Fatal编程技术网

Spring mvc 在SpringMVC控制器上重写RequestMapping

Spring mvc 在SpringMVC控制器上重写RequestMapping,spring-mvc,Spring Mvc,通过查看应用程序的源代码,我发现了一个常见的SpringMVC控制器,它可以显示多次复制和粘贴的配置键和值。除了RequestMapping值之外,类定义完全相同,因为每个应用程序都希望此页面在不同的URL下可用 我想将这个控制器移动到一个公共库中,并提供一个默认的RequestMapping值 @Controller @RequestMapping (value="/property") public class CommonPropertyController { .... } 如

通过查看应用程序的源代码,我发现了一个常见的SpringMVC控制器,它可以显示多次复制和粘贴的配置键和值。除了RequestMapping值之外,类定义完全相同,因为每个应用程序都希望此页面在不同的URL下可用

我想将这个控制器移动到一个公共库中,并提供一个默认的RequestMapping值

@Controller 
@RequestMapping (value="/property")
public class CommonPropertyController {
   ....
}

如果每个应用程序想要使用自己的url模式,它们将如何覆盖该值

通过查看源代码,我了解了如何在不必返回手动(预注释)处理程序定义的情况下执行此操作(这也是实现所需功能的一种方法)

Spring允许您在
@RequestMapping
值中使用属性占位符配置器。因此,可以使用该事实定义
@RequestMapping
如下:

@Controller
@RequestMapping("${routing.property.path}")
public class CommonPropertyController {
    ....
}
然后,您只需在应用程序上下文中使用正确的属性定义
propertysourcesplaceplaceconfigurer
,就可以了


更新如果要在未指定属性的情况下进行回退映射,还可以使用属性占位符指定默认值:

@RequestMapping("${routing.property.path:/property}")

如果属性不存在,这还有禁用控制器的额外好处。这正是我想要的。我不确定你能不能用这种方式禁用控制器。它将映射到占位符本身,或者您可能会得到有关未解析属性的错误。。。顺便说一句,我还注意到,
@RequestMapping
JavaDoc:)在浏览文档时提到了占位符行为,还有一个更好的特性-您可以在属性占位符中指定默认值:
@RequestMapping(${routing.property.path:/property}”)
。我会在答案中加上这个。