覆盖SpringMVC控制器上的RequestMapping

时间:2013-06-15 22:21:40

标签: spring-mvc

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

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

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

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

1 个答案:

答案 0 :(得分:11)

查看源代码我知道如何在不必返回手动(预注释)处理程序定义的情况下完成它(这也是一种如何实现所需内容的方法)。

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

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

然后,您只需在应用程序上下文中使用正确的属性定义PropertySourcesPlaceholderConfigurer,就可以了。


更新如果您希望在不对该属性进行修改的情况下进行回退映射,则还可以使用属性占位符指定默认值:

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