7

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

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

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

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

4

1 回答 1

12

查看源代码,我知道了如何做到这一点,而无需返回手动(预注释)处理程序定义(这也是实现所需内容的一种方式)。

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

@Controller
@RequestMapping("${routing.property.path}")
public class CommonPropertyController {
    ....
}

然后,您可以简单地PropertySourcesPlaceholderConfigurer在应用程序上下文中使用正确的属性进行定义,一切顺利。


更新如果您希望在未指定属性的情况下进行后备映射,您还可以使用属性占位符指定默认值:

@RequestMapping("${routing.property.path:/property}")
于 2013-06-15T22:40:27.480 回答