查看我们的应用程序的源代码,我找到了一个常见的Spring MVC控制器,它可以多次复制和粘贴显示键和配置值。除了RequestMapping值之外,类定义完全相同,因为每个应用程序都希望在不同的URL下提供此页面。
我想将此控制器移动到公共库中,并提供默认的RequestMapping值。
@Controller
@RequestMapping (value="/property")
public class CommonPropertyController {
....
}
如果每个应用程序想要使用自己的url模式,它们将如何覆盖此值?
答案 0 :(得分:11)
查看源代码我知道如何在不必返回手动(预注释)处理程序定义的情况下完成它(这也是一种如何实现所需内容的方法)。
Spring允许您在@RequestMapping
值中使用属性占位符配置器。因此可以使用该事实并定义@RequestMapping
,如:
@Controller
@RequestMapping("${routing.property.path}")
public class CommonPropertyController {
....
}
然后,您只需在应用程序上下文中使用正确的属性定义PropertySourcesPlaceholderConfigurer
,就可以了。
更新如果您希望在不对该属性进行修改的情况下进行回退映射,则还可以使用属性占位符指定默认值:
@RequestMapping("${routing.property.path:/property}")